php - 如何按具有多个条目的相关表进行排序?
问题描述
我有 2 张桌子 - 父母和孩子。我想返回所有按孩子姓名排序的父母。但由于父母可以有多个孩子,我似乎无法弄清楚如何排序。我需要带按字母顺序排列的孩子(每个父母的名字)并以某种方式使用它进行排序。
基本上我需要做这些事情
- 对所有父母的所有孩子进行排序,并获得每个孩子的第一个孩子(按字母顺序)。
例如,对于id: 9的父母,他的孩子将是 Alex Briggs (select * from children where parent_id = 9 order by asc LIMIT 1)
1. Alex Briggs (first one)
------------------------------
2. Ashley Briggs
3. Lucy Briggs
4. Lukas Briggs
And for parent with id: 3
1. Alex Skull (first one)
------------------------------
2. Don Skull
3. Erica Skull
然后返回按第一个孩子排序的所有父母(按字母顺序)。
select * from parents order by ( their first child by alphabet .... ASC )
父母表
| id | fullname |
1 Mark Dever
2 John Witney
3 Joey Skull
4 Abraham Lincon
5 Donald Trump
6 Britney Huston
7 Martin Lu
8 Eric Tada
9 Andy Briggs
10 Linda Briggs
儿童桌
| id | parent_id | fullname |
1 9 Lukas Briggs
2 9 Alex Briggs
3 10 Ashley Briggs
4 10 Lucy Briggs
5 1 Mark Driscoll
6 2 Zack Witney
7 2 Victoria Witney
8 3 Alex Skull
9 3 Don Skull
10 3 Erica Skull
结果会是这样
{
parent_id: 9,
fullname: Andy Briggs,
children: [
...Alex, Ashley, Lucy...
]
},
{
parent_id: 10,
fullname: Linda Briggs,
children: [
...Alex, Ashley, Lucy...
]
},
{
parent_id: 3,
fullname: Joey Skull,
children: [
...Alex, Don, Erica...
]
},
{
parent_id: 1,
fullname: Mark Dever,
children: [
...Mark...
]
},
{
parent_id: 2,
fullname: John Witney,
children: [
...Victoria, Zack...
]
},
解决方案
由于您想订购孩子的名字,您可以使用以下查询。
SELECT b.parent_id,a.fullname, GROUP_CONCAT(b.fullname ORDER BY b.fullname ASC) children
FROM parent a
JOIN children b
ON a.id=b.parent_id
GROUP BY b.parent_id,a.fullname;
推荐阅读
- sql - 如何在单个 SQL 查询中为每个字段选择第 k 条记录
- javascript - 尝试根据使用 Javascript 的 URL 中的内容重定向页面
- applescript - Applescript 以 Safari 私人模式打开 youtube
- typescript - ionic 4 - 背景地理位置问题
- r - 由于路径中的重音,在 R 中使用 readJPEG 打开 .jpg 时出错
- c++ - 从 QUdpSocket 发送的数据包在 Wireshark 中看不到
- c++ - Travis CI 从源日志限制错误安装提升
- php - 如何使用 WP REST API 随机排序帖子?
- sql - 从多个表格中选择特定单元格
- java - 如何使 GUI 上的多个按钮工作