2016-05-13 11 views
2

マイデータベース構造は、以下である:グループデータ(多対多)

RESERVATION

  • ID
  • responsible_person
  • number_of_persons

サイズ

  • ID
  • サイズ

多対多の表RESERVATIONS_HAS_SIZE

  • RESERVATION_ID
  • SIZE_ID

人は、例えば3人を登録することができる。あなたはこれら3人の人(S、M、L)のサイズを選ぶ必要があります。

私のクエリは次のようになります。

SELECT * FROM RESERVATION 
INNER JOIN RESERVATIONS_HAS_SIZE 
ON RESERVATION.ID = RESERVATIONS_HAS_SIZE.RESERVATION_ID 
INNER JOIN SIZES 
ON RESERVATIONS_HAS_SIZE.SIZE_ID = SIZE.ID 

問題は、今私は3つのレコードをバック取得しています。私はただ1つのレコードだけを返したい、例えばS、S、Lの1つのフィールドが必要です。

これは可能ですか?もしそうなら、どうしたらいいですか?

+0

あなたの質問を編集して、サンプルデータと望ましい結果を提供してください。 –

答えて

4

あなたはGROUP_CONCAT()を使用することができます。

SELECT GROUP_CONCAT(s.Size SEPARATOR ', ') 
FROM RESERVATION r INNER JOIN 
    RESERVATIONS_HAS_SIZE rhs 
    ON r.ID = rhs.RESERVATION_ID INNER JOIN 
    SIZES s 
    ON rhs.SIZE_ID = s.ID; 
+0

ありがとうございました! – nielsv