2013-05-14 81 views
3

嘗試第一次進行內連接,事情進展順利,只有最後一步才能從我的數據庫接收正確的數據。這是我的SQL查詢:按ID從內連接表中選擇多條記錄

SELECT roadtrip_tblgeneral.*, roadtrip_tblhotels.hotel, roadtrip_tbllocation.location, roadtrip_tbltransport.transport 
FROM roadtrip_tblgeneral 
INNER JOIN roadtrip_tblhotels 
ON roadtrip_tblgeneral.id = roadtrip_tblhotels.tripid 
INNER JOIN roadtrip_tbllocation 
ON roadtrip_tblgeneral.id = roadtrip_tbllocation.tripid 
INNER JOIN roadtrip_tbltransport 
ON roadtrip_tbltransport.id = roadtrip_tbltransport.tripid 
WHERE roadtrip_tblgeneral.tripcode = 'cb8v73x9' 

這是我從數據庫得到的迴應:一切看起來不錯,但一個用戶可以添加多個車輛進入運輸用相同的ID,我想所有的背部和不只有一個。 (如地鐵,汽車,自行車,...)

id tripname  tripcode hotel location transport   
1 London  cb8v73x9 Seaside London  Metro 

回答

1

我認爲這可能是您的問題

ON roadtrip_tbltransport.id = roadtrip_tbltransport.tripid 

你似乎是試圖根據病情無關的一個連接兩張表第一個表被連接

您此前在其他行的模式看你的意思是這樣的:

ON roadtrip_tblgeneral.id = roadtrip_tbltransport.tripid 

@kickstart說,你可以通過改變你的SELECT語句將所有運輸方式爲一體的列

SELECT roadtrip_tblgeneral.*, roadtrip_tblhotels.hotel, roadtrip_tbllocation.location, GROUP_CONCAT(roadtrip_tbltransport.transport) 

這可能是更好的應用程序級別來處理這個,如果你需要單獨訪問每個傳輸類型但GROUP_CONCAT()應該是罰款,如果你想要的是一個字符串逗號分隔的運輸方式以單項

+0

這是它,但有沒有辦法來推動所有的運輸車輛在一個紀錄,因爲這給了我兩次數據:ID \t tripname \t tripcode \t酒店\t位置交通倫敦\t cb8v73x9 \t海邊\t倫敦\t地鐵倫敦\t cb8v73x9 \t海邊\t倫敦\t汽車 – user2381011 2013-05-14 09:58:43

+1

作爲Kickstart中說,GROUP_CONCAT能做到這一點,但我會處理,諸如此類的事情在應用層面(數據顯示的問題)。 – Strawberry 2013-05-14 10:02:03

0

使用GROUP BY和GROUP_CONCAT獲得在一個領域中使用的所有傳輸,用逗號分隔

SELECT roadtrip_tblgeneral.*, roadtrip_tblhotels.hotel, roadtrip_tbllocation.location, GROUP_CONCAT(roadtrip_tbltransport.transport) 
FROM roadtrip_tblgeneral 
INNER JOIN roadtrip_tblhotels 
ON roadtrip_tblgeneral.id = roadtrip_tblhotels.tripid 
INNER JOIN roadtrip_tbllocation 
ON roadtrip_tblgeneral.id = roadtrip_tbllocation.tripid 
INNER JOIN roadtrip_tbltransport 
ON roadtrip_tblgeneral.id = roadtrip_tbltransport.tripid 
WHERE roadtrip_tblgeneral.tripcode = 'cb8v73x9' 
GROUP BY roadtrip_tblgeneral.id 

請注意,您應該真的使用GROUP BY子句中的所有非聚合字段,但上述內容應該可行。

+0

謝謝,這解決了我的第二個也是最後一個問題。現在我有我需要的數據。 – user2381011 2013-05-14 10:06:36