mysql - 一条记录中的 GROUP 数据(多对多)

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

我的数据库结构如下:

表格预订

  • 身份证
  • responsible_person
  • 人数

表格大小

  • 身份证
  • 尺寸

多对多表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;

关于mysql - 一条记录中的 GROUP 数据(多对多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37208730/

相关文章:

sql - 如何找到存储过程调用?

python - 如何使用 Django 使递归多对多关系对称

python - 来自 ManyToMany 关系的查询集

mysql - MySQL中使用保留字作为表名或列名导致的语法错误

mysql - trustCertificateKeyStoreUrl 与 clientCertificateKeyStoreUrl

php - 警告:PDOStatement::execute(): SQLSTATE[HY093]: 参数编号无效:绑定(bind)变量的数量与数量不匹配

mysql - 如何获得最后n分钟的速度

php - 查询用另一个表中的另一个随机记录更新记录?

mysql - LEFT JOIN with NULL, NOT EQUAL 它们都显示出意想不到的结果

django - HTML 模板中的多对多标签