【问题标题】:Complex query with parameters in SUPABASESUPABASE 中带有参数的复杂查询
【发布时间】:2021-08-11 03:32:47
【问题描述】:

我想在 supabase 中创建这个 except 查询,但在 day 列中使用参数。例如:

CREATE VIEW employees_without_registering AS 
  SELECT employees.id
  FROM employees
  EXCEPT
  SELECT "idEmployee" FROM registers WHERE "day"='2021-07-25'

我尝试的是在查询编辑器中创建一个视图,然后尝试通过以下方式访问结果:

await supabase.from('employees_without_registering')
  .select('*');

但结果仅针对该查询。我想根据自己的选择更改日期。

也许我的方法很糟糕,这可以通过 supabase api 的另一种方式解决,但我想听听有关如何解决这个问题的建议。

【问题讨论】:

    标签: supabase


    【解决方案1】:

    您需要为此编写一个存储函数并调用它 supabase.rpc("get_my_complex_query",{parameter:1})

    转到仪表板上的 SQL 查询编辑器,然后:

    drop function if exists get_my_complex_query;
    create function get_my_complex_query (parameter int)
    RETURNS TABLE(column1 integer, column2 varchar) AS
    $$
    BEGIN
      return query SELECT column1, column2 FROM "TableName1"
        INNER JOIN "TableName2" ON "TableName1".column = "TableName2".column 
        WHERE "Table2".column = parameter;
    END;
    $$
    language plpgsql volatile;
    

    这里有一些有用的链接了解更多详情:

    https://www.postgresqltutorial.com/introduction-to-postgresql-stored-procedures/

    https://www.postgresql.org/docs/9.1/plpgsql-declarations.html

    https://www.postgresqltutorial.com/plpgsql-function-returns-a-table/

    您的另一个选择是在客户端过滤您的视图:

    await supabase.from('employees')
      .select('id')
      .neq("day","2021-07-25");
    

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多