2013-05-16 95 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會使用,因爲它來自左表返回所有的數據,即使在右表中沒有匹配行