一个记录中的GROUP数据(多对多)

时间:2016-05-13 11:19:42

标签: mysql sql many-to-many inner-join

我的数据库结构如下:

预订

  • ID
  • responsible_person
  • number_of_persons

SIZE

  • 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条记录。我只想要一个记录,例如一个字段大小为: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;