0

在我的 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。

提前致谢。

4

2 回答 2

1

当两个表中至少有一个匹配项时,INNER JOIN 关键字返回行。如果没有数据,则无法匹配,也许您想使用 LEFT JOIN 或 FULL JOIN。

于 2013-05-16T16:53:12.740 回答
0

将使用左连接,因为它返回左表中的所有数据,即使右表中没有匹配的行

于 2013-05-16T17:04:00.213 回答