所以我问了几个关于执行连接的问题并得到了很好的答案,但仍然有一些我完全被这些问题所困扰。
我有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 我的问题是我不知道编写此查询的语法。我知道如何编写多个内连接,我知道如何编写左连接。我如何将两者合并?
非常感谢帮助我的每个人。我(显然!)是数据库的新手,我正在努力解决这个问题!
答案 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)