如何从关于 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
我有一个 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