mysql加入让我发疯!

时间:2009-07-04 18:00:53

标签: mysql left-join database join

所以我问了几个关于执行连接的问题并得到了很好的答案,但仍然有一些我完全被这些问题所困扰。

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

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)