Left Join 基于字段值

Left Join based on field value

我想从以下 tables,

中获取有关我购买的所有详细信息
1) tbl_track
2) tbl_album
3) tbl_purchase

tbl _purchase table :-

item_id
type
price

tbl_track table :-

id
title
description

tbl_album table :-

id
title
description

现在根据 tbl_purchase 的类型,我想加入 table 之一, 这意味着 If type = 0 then LEFT JOIN with tbl_track and for type = 1 then LEFT JOIN with tbl_album.

我只想用一个查询来完成这些,用两个查询很容易完成。

提前致谢。

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

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

试试这个:

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;

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