MySQL SELECT JOIN

时间:2015-03-27 11:47:33

标签: php mysql

我尝试使用MySQL JOIN从数据库中获取一些数据,但直到现在才取得成功

我有table_a(代表订单行):

id  idc cPos
1   1   10
2   1   20
3   1   30
4   1   40
5   1   50
6   2   10
7   2   20
8   2   30
9   2   40
10  3   10
11  3   20
12  3   30
13  3   40
14  3   50

和table_b:

delivery_id idc cPos
1           1   10
1           1   50
2           1   20
2           3   40
2           3   50

我想查询以下结果:

id  idc cPos    delivery_id
1   1   10      1
3   1   30      NULL
4   1   40      NULL
5   1   50      1
6   2   10      NULL
7   2   20      NULL
8   2   30      NULL
9   2   40      NULL
10  3   10      NULL
11  3   20      NULL
12  3   30      NULL

我需要来自table_b的所有记录,其中delivery_id等于1,table_a中的所有记录在table_b中没有corespondent(通过corespondent我理解table_a.idc = table_b.idc AND table_a.cPos = table_b.cPos)

我使用的查询:

SELECT table_a.*, table_b.delivery_id FROM table_a
LEFT JOIN table_b ON (table_a.idc = table_b.idc AND table_a.cPos = table_b.cPos)
WHERE (delivery_id IS NULL OR delivery_id = 1)

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您必须创建两个条件的LEFT JOIN:

SELECT tab_a.*,tab_b.delivery_id
FROM table_a tab_a
LEFT JOIN table_b tab_b ON tab_a.idc=tab_b.idc, tab_a.cPos=tab_b.cPos