2017-11-27 16 views
-1

私の問題は次です:同じ行に複数の値がありますMYSQL

私は予約に関する情報を表示するSQLクエリを持っています。情報は、予約、電話などを行った人の名前と、購入したエキストラです。 私は彼が同じ行に買ったすべてのエキストラを表示する必要がありますが、私はそれのための方法を見つけることができません(私は非常にmysqlで良いです)

私は2つのテーブルを持っています:1予約の一般情報1つの予約が複数の追加を持つことができ、1つの追加が複数の予約にある可能性があるため、別の情報に追加することができます。

表の予約: ID、名前、電話

テーブルbooking_extra:私は

select * from booking 
left join booking_extra on id_booking = booking.id 

にしたいとの結果がでなければなりません

をid_booking ID、id_extra、何か

のような
id:1 
    name: test 
    telephone: 123456 
    extras: 1,2,3 

アイデア?

+0

'group_concat'? – panther

+0

ほぼ!しかし、それは私にすべてのエキストラと私だけの行を示しています、私はすべての予約を表示する必要があるだけでなく、... –

+0

グーグルでgroup_concatをどうやって見つけられませんでしたか? – philipxy

答えて

0

を@pantherコメントで示唆した通り、group_concatを使用しています。だからクエリは次のようになります:

SELECT A.ID, A.NAME, A.TELEPHONE, 
GROUP_CONCAT(DISTINCT B.ID_EXTRA ORDER BY B.ID_EXTRA ASC SEPARATOR ',') EXTRAS 
FROM BOOKING A LEFT JOIN BOOKING_EXTRA B ON A.ID=B.ID_BOOKING 
GROUP BY A.ID, B.ID_BOOKING; 
+1

ここでグループ条件はありますか? –

+0

こんにちは@krishnaaryal、ありがとうございます。私はちょうど私の答えを更新しました – cdaiga

+1

は魅力的なように動作します、ありがとうございます! –

0

このような何か:

SELECT id, name, telephone, GROUP_CONCAT(extras, separator ',') 
FROM booking 
LEFT JOIN booking_extra ON id_booking = booking.id 
GROUP BY id, name, telephone 
+0

答えに感謝、それは動作します! –

+0

なぜ他の答えを選んだのですか? ' –

+0

' distinc '状態、申し訳ありません。 –

関連する問題