3

初めて内部結合しようとすると、うまくいきますが、データベースから正しいデータを受け取るには最後のステップだけが欠けています。これは私のSQLクエリです:

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'

これは、データベースから取得した応答です。すべて問題ないように見えますが、1 人のユーザーが同じ ID で複数の車両をトランスポートに追加できます。1 つだけでなく、それらすべてを取得したいと考えています。(例: 地下鉄、車、自転車、...)

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

2 に答える 2

0

GROUP BY と GROUP_CONCAT を使用して、1 つのフィールドで使用されているすべてのトランスポートを取得し、値をコンマで区切って取得します

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 句ですべての非集計フィールドを実際に使用する必要がありますが、上記は機能するはずです。

于 2013-05-14T09:56:41.277 に答える