0

所以我问了几个关于执行连接的问题并且得到了很好的答案,但我仍然完全被难住了。

我有 3 张桌子。让我们称它们为table-b、table-d 和table-e。
表 b 和表 d 共享一个称为 p-id 的列。
表 e 和表 b 共享一个名为 ev-id 的列。
Table-e 也有一个名为 date 的列。
Table-b 还有一个唯一的 id 列,称为 u-id。

我想编写一个在以下条件下返回 u-id 的查询:
1)限制为 table-e.date 中的某个值。
2) 其中 table-bp-id 与 table-dp-id 不匹配。

我想我需要在 e-id 列上内连接 table-b 和 table-e。然后我认为我需要在 p-id 为空的 table-d 和 table-b 上执行左连接。
我的问题是我不知道编写此查询的语法。我知道如何编写多个内连接,也知道如何编写左连接。我如何将两者结合起来?

非常感谢所有帮助我的人。我(显然!)是数据库的新手,并且正在努力解决所有问题!

4

2 回答 2

3

您只需一个接一个地编写连接:

SELECT b.uid
  FROM b
  INNER JOIN e USING(evid)
  LEFT JOIN d USING(pid)
  WHERE e.date = :whatever
    AND d.pid IS NULL
于 2009-07-04T18:23:28.707 回答
0

我认为它是这样的:

SELECT uid
  FROM table-b
  INNER JOIN table-e
      ON table-b.ev_id = table-e.ev_id
  WHERE table-b.p_id NOT IN (SELECT p_id from table-d)
于 2009-07-04T18:28:00.087 回答