【发布时间】:2016-11-23 06:06:56
【问题描述】:
我有 4 个表要加入,以便在其中获取必要的数据。
表 A。
id | name | deleted | amount | due_date | status
1 | a | 0 | 10 | 2016-07-18 | Unpaid
2 | b | 0 | 20 | 2016-07-19 | Unpaid
3 | c | 0 | 15 | 2016-07-18 | Unpaid
表 B
id | name | due_date | status
1 | a | | Unpaid
2 | b | | Unpaid
3 | c | | Unpaid
4 | d | 2016-07-19 | Unpaid
表 C
id | table_d_id | table_a_id
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
表 D
id |
1
2
3
我在这里要做的是检索表 B 中具有到期日期和未付款状态的数据,并且在表 A 中找不到它。
我当前的查询:
SELECT A.*, B.*, C.*, D.*
FROM A
LEFT OUTER JOIN B ON B.name= A.name
INNER JOIN C ON A.id = C.id
INNER JOIN D ON C.id = D.id
WHERE A.deleted=0 AND ((B.due_date < "2016-07-20" AND B.status = "Unpaid") OR (A.due_date < "2016-07-20" AND A.status = "Unpaid"))
GROUP BY D.id
这个查询目前所做的是它只获取表中的数据,除了表 B 中的 id 4,我也希望检索它,因为它处于未付费状态。
【问题讨论】:
-
第一件事 LEFT JOIN 和 LEFT OUTER JOIN 都是一样的
-
@DhavalBhavsar 我不知道我刚刚检查了谷歌并看到 OUTER 连接从两个表中获取所有内容。
标签: mysql sql-server join