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
我想从以下 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