如何从关于 2 tables 的查询中构建一个枢轴 table

How to build a pivot table from a query regarding 2 tables

我有一个 2 MySQL table 看起来像这样:

table parents

+-------+-----------+-----------+
| id    |  name     | birthdate |
+-------+-----------+-----------+
|     1 | Mary      | 1974-05-02|
|     2 | John      | 1970-06-03|
|     4 | James     | 1984-07-04|

table children

+-------+-----------+-----------+-----------+-----------+
| id    |  parent   | name      |birthdate  |  gender   |
+-------+-----------+-----------+-----------+-----------+
|     1 | 1         | Sara      |2013-10-22 | female    |
|     2 | 1         | Jack      |2014-05-02 | male      |
|     3 | 1         | Jill      |2015-06-07 | female    |
|     4 | 2         | Sam       |2015-06-07 | male      |
|     5 | 2         | Fred      |2015-06-07 | male      |
|     6 | 3         | Julie     |2015-06-07 | female    |
|     7 | 4         | Megan     |2015-06-07 | female    |

我需要输出 parents 姓名、生日、年龄、children 的人数、children 的生日(都在同一列中)作为

+---------+--------------+--------+------------+----------------------------------+
| p.name  |  p.birthdate | p.age  | children   |  birthdates                      |
+---------+--------------+--------+------------+----------------------------------+
| Mary    | 1974-05-02   | 42     |    3       | 2013-10-22,2014-05-02,2015-06-07 |

我目前的查询是:

SELECT p.name, p.birthdate, TIMESTAMPDIFF(YEAR, p.birthdate, CURDATE()) AS age, COUNT(c.id) as numchildren
FROM parents p 
INNER JOIN children c ON p.id = c.parent
GROUP BY p.id

如何将 children 个生日连接在一个列中?

在您的查询中使用 GROUP_CONCAT:

SELECT
    p. NAME,
    p.birthdate,
    TIMESTAMPDIFF(YEAR, p.birthdate, CURDATE()) AS age,
    COUNT(c.id) AS numchildren,
    GROUP_CONCAT(c.birthdates) birthdates
FROM
    parents p
INNER JOIN children c ON p.id = c.parent
GROUP BY
    p.id