【问题标题】:Supabase join and nested selectSupabase 连接和嵌套选择
【发布时间】:2022-09-28 14:46:54
【问题描述】:

假设我有 3 张桌子:

  • 表 1 (ID, col1, col2)
  • 表 2 (ID, col3, col4)
  • 表 3 (table1_id,table2_id)

我想要做的是加入 Table1 和 Table2 然后选择具有特定列值的行(例如 col4 == \"123\")

我尝试了什么:

supabase.from(\"Table3\").select(
 \'\'\'
  Table1 (
   col1,
   col2
  ),
  Table2 (
   col3,
   col4
  ),
 \'\'\'
).eq(\"Table2.col4\", \"123\").execute();

这样做的问题是它为与查询匹配的行返回具有 Table1 和 Table2 属性的正确对象,但对于与查询不匹配的行(因此不应返回),它返回具有 Table1 属性和 Table2 的对象属性设置为空。

上述查询的示例:

表格1 |标识 | col1 | col2| |---|------|-----| |1 | val1 | val2| |2 | val3 | val4|

表2 |标识 | col3 | col4 | |---|------|------| |3 | val5 | 123 | |4 | val7 | val8 |

表3 |table1_id| table2_id| |---------|----------| |1 | 3 | |2 | 4 |

结果 |col1 | col2 | col3 | col4 | |-----|------|------|------| |val1 | val2 | val5 | 123 | |val3 | val4 |空 |空 |

如何防止它返回与查询不匹配的行?

    标签: flutter dart supabase supabase-database


    【解决方案1】:

    您可以为此使用 !inner 关键字。 !inner 允许您通过将过滤器应用于合适的过滤器来过滤根表结果。

    supabase.from("Table3").select(
     '''
      Table1!inner (
       col1,
       col2
      ),
      Table2!inner (
       col3,
       col4
      ),
     '''
    ).eq("Table2.col4", "123").execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2018-10-03
      • 2013-03-19
      相关资源
      最近更新 更多