gpt4 book ai didi

node.js - Postgres SQL 加入多对多关系

转载 作者:行者123 更新时间:2023-11-29 13:27:00 25 4
gpt4 key购买 nike

现在我正在“学习”Postgres SQL。我有 3 个表:

1)用户:userId

2) 栈:stackId

3) User_Stack: userId, stackId

现在我想获取属于一个用户的所有堆栈,给定 userId。我知道我需要使用连接,但那是我被卡住了......我这样尝试:

SELECT * FROM "Stack" LEFT OUTER JOIN "User_Stack" ON ('User_Stack.stackId' = 'Stack.stackId') WHERE "userId" = '590855';

错误:返回数据为空。

PS:那里有任何 GUI 查询生成器吗?或者您还有其他如何系统地创建查询的技巧吗?

编辑:如果我将查询更改为:

SELECT * FROM "Stack" INNER JOIN "User_Stack" ON (User_Stack.stackId = Stack.stackId) WHERE "userId" = '590855';

我收到以下错误:

  Kernel error: ERROR:  missing FROM-clause entry for table "user_stack"
LINE 1: SELECT * FROM "Stack" INNER JOIN "User_Stack" ON (User_Stack...

最佳答案

您的主要错误在于联接。如果您执行 'something' = 'other',您将比较字符串文字,而不是从数据库中获取任何内容。所以这将始终返回 false。你会想要比较 table1.field1 = table2.field2

另一件事是 LEFT OUTER JOIN。我很确定您需要 INNER JOIN,因为您只需要存在于另一个表中的字段。

也不要对字段和表名使用双引号,因为这样数据库将需要区分大小写,通常区分大小写的名称是不好的。如果需要,您可以将它们与小写名称一起使用,并且始终以小写形式创建它们。

数字也不需要引号,当系统必须将它们从文本转换为数字时,它只会导致更多的处理。

关于node.js - Postgres SQL 加入多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com