一条记录中的 GROUP 数据(多对多)
GROUP data in one record (many-to-many)
我的数据库结构如下:
Table 预约
- ID
- responsible_person
- number_of_persons
Table 尺码
- ID
- 尺码
多对多 Table 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。
这可能吗?如果是这样,我该怎么做?
您可以使用 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;
我的数据库结构如下:
Table 预约
- ID
- responsible_person
- number_of_persons
Table 尺码
- ID
- 尺码
多对多 Table 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。
这可能吗?如果是这样,我该怎么做?
您可以使用 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;