2013-05-16 45 views
0

在我的SQL查询中,我正在检查不同的参数。当插入的行程代码的每个表中都有数据时,不会发生任何奇怪的事情。但是当一个表没有数据时,我根本就没有收到任何数据。即使其他表格有数据。所以我需要能够检查表中是否有数据,如果有,我需要选择。MYSQL SELECT:检查rowdata是否存在

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。

在此先感谢。

回答

1

当两个表中至少有一个匹配时,INNER JOIN关键字将返回行。如果没有数据,则不能进行匹配,也许要使用“左连接”或“全连接”。

+0

谢谢,LEFT JOIN做的工作。如果在特定结果中没有数据,它只会返回空值。 – user2381011

0

LEFT JOIN会使用,因为它来自左表返回所有的数据,即使在右表中没有匹配行