【发布时间】:2009-07-04 18:00:52
【问题描述】:
所以我问了几个关于执行连接的问题并且得到了很好的答案,但我仍然完全被难住了。
我有 3 张桌子。让我们称它们为 table-b、table-d 和 table-e。
表 b 和表 d 共享一个名为 p-id 的列。
Table-e 和 table-b 共享一个名为 ev-id 的列。
Table-e 也有一个名为 date 的列。
Table-b 还有一个唯一的 id 列,称为 u-id。
我想编写一个在以下条件下返回 u-id 的查询:
1) 限制为table-e.date中的某个值。
2) 其中 table-b.p-id 与 table-d.p-id 不匹配。
我想我需要在 e-id 列上内连接 table-b 和 table-e。然后我认为我需要在 p-id 为空的 table-d 和 table-b 上执行左连接。
我的问题是我不知道编写此查询的语法。我知道如何编写多个内连接,也知道如何编写左连接。如何将两者结合起来?
非常感谢所有帮助我的人。我(显然!)是数据库的新手,并且正在努力解决所有问题!
【问题讨论】:
-
请发布两个部分查询 - 如果您展示您迄今为止尝试过的内容,这将对我们有所帮助。
-
你确定条件2吗?例如如果您在表 b 和 d 中的 p-id 为 2、3、4,您希望 b 中的 2 匹配 d 中的 3 和 4,b 中的 3 匹配 d 中的 2 和 4,并且 b 中的 4 匹配 2 和3 在 b?另外,你想让 b 中的 null 匹配 d 中的 null 吗?
-
我无法发布部分查询,因为我没有为此示例编写它们。我只是说我知道执行连接的通用语法。
-
我不太关注@Jeremy。我想从 table-d 返回 u-id,但仅限于那些在 table-d 中具有 p-id 而未出现在 table-b 中的记录。这更有意义吗?
-
啊,对。那是“不在”而不是“左加入”:)
标签: mysql left-join database join