在我的SQL查询中,我正在检查不同的参数。当插入的tripcode的每个表中都有数据时,没有什么奇怪的事情发生。但是当一个表中没有数据时,我根本得不到任何数据。即使其他表有数据。所以我需要能够检查表中是否有数据,如果有,我需要选择。
SELECT roadtrip_tblgeneral.*,
GROUP_CONCAT(distinct roadtrip_tblhotels.hotel) as hotels,
GROUP_CONCAT(distinct roadtrip_tbllocations.location) as locations,
GROUP_CONCAT(distinct roadtrip_tbltransports.transport) as transports
FROM roadtrip_tblgeneral
INNER JOIN roadtrip_tblhotels
ON roadtrip_tblgeneral.id = roadtrip_tblhotels.tripid
INNER JOIN roadtrip_tbllocations
ON roadtrip_tblgeneral.id = roadtrip_tbllocations.tripid
INNER JOIN roadtrip_tbltransports
ON roadtrip_tblgeneral.id = roadtrip_tbltransports.tripid
WHERE roadtrip_tblgeneral.tripcode = :tripcode
GROUP BY roadtrip_tblgeneral.id
只有前面有GROUP_CONCAT的表需要检查。我已经尝试过前面的关键字EXISTS。
提前致谢。
答案 0 :(得分:1)
当两个表中至少有一个匹配项时,INNER JOIN关键字返回行。如果没有数据,你就不能匹配,也许你想要使用LEFT JOIN或FULL JOIN。
答案 1 :(得分:0)
左连接将被使用,因为它返回左表中的所有数据,即使右表中没有匹配的行