【发布时间】:2018-09-02 05:43:17
【问题描述】:
如果父级不为空,有没有办法将行组合在一起
我先解释一下数据库:
-----------------------------------------------------
ID | NAME | date | PARENT ID
-----------------------------------------------------
1 | John Doe | 2018-01-12 |
2 | Doe John | 2018-01-12 |
3 | Doe John | 2018-02-12 | 2
4 | Doe John | 2018-03-22 | 2
现在我想要的是得到一个这样的列表:
--------------------------------------------------------------
ID | NAME | date | PARENT ID
-------------------------------------------------------------
1 | John Doe | 2018-01-12 |
2 | Doe John | 2018-01-12 / 2018-03-22 |
我尝试过这样的事情:
SELECT *, CONCAT(parentID)
FROM names
GROUP BY parentID;
但是结果只有具有 parentID 的结果,我想显示没有 parentID 的结果并将具有 parentID 的结果分组到 ID
【问题讨论】:
-
你需要解释得更好,这看起来更像是需要在 parent_id IS NULL 上使用 WHERE 子句,而不是分组问题......
-
date列的条目是CONCAT(MIN(date), ' / ', MAX(date))组吗? (+日期格式...) -
不完全清楚,至少对我来说,
date是如何计算的。它是否包含节点的日期及其子节点的日期?如果是,那么为什么Doe John不包含日期2018-02-12? -
SELECT * .... GROUP BY parentID正在自找麻烦,因为它不是 ansi 有效的 group by 查询,这意味着结果可能与分组列 parentID 无关。阅读psce.com/en/blog/2012/05/15/… -
我已经在里面放了一些示例数据,我需要它作为我正在写的预订代码。所以有人可以预订更多的日期,我想结合它是否有一个父母的父母ID