左连接基于字段值

时间:2016-01-04 11:02:18

标签: mysql sql select join left-join

我想从下表中了解我购买的所有细节,

1) tbl_track
2) tbl_album
3) tbl_purchase

tbl _purchase table: -

item_id
type
price

tbl_track表: -

id
title
description

tbl_album表: -

id
title
description

现在基于tbl_purchase的类型我要加入其中一个表, 这意味着,如果type = 0然后LEFT JOINtbl_tracktype = 1,则LEFT JOINtbl_album

我想只用一个查询来完成这些操作,可以通过两个查询轻松完成。

提前致谢。

3 个答案:

答案 0 :(得分:3)

使用UNION

SELECT p.type, t.id, t.title, t.description
FROM tbl_purchase p
JOIN tbl_track t ON t.id = p.item_id AND p.type = 0
UNION
SELECT p.type, a.id, a.title, a.description
FROM tbl_purchase p
JOIN tbl_album a ON a.id = p.item_id AND p.type = 1

答案 1 :(得分:2)

我认为你无论如何都需要左边连接两个表。因此,您可以使用下一个查询,例如

SELECT P.*,
       T.id AS track_id,
       A.id AS album_id
FROM tbl_purchase AS P
    LEFT JOIN tbl_track AS T ON P.item_id = T.id
                                    AND P.type = 0
    LEFT JOIN tbl_album AS A ON P.item_id = A.item_id
                                    AND P.type = 1

答案 2 :(得分:0)

试试这个:

SELECT * 
FROM tbl_purchase A 
LEFT OUTER JOIN tbl_track B ON A.item_id = B.id AND A.type = 0 
LEFT OUTER JOIN tbl_album C ON A.item_id = C.id AND A.type = 1;