我有一张桌子。一个人可能有多个孩子或家属,也是人。因此,人员表之间存在一对多的关系。
我希望所有有一个或多个孩子的人。但是,查询仅返回每个父项的第一个匹配子项,而不是所有父项。如何更改查询以返回所有查询?
SELECT parent, child FROM people
WHERE parent in (select distinct parent from people)
我期待的更像是表格
[parent] => Array
{
[child] => 'Sam'
[child] => 'Mark'
....
}
人员表没有什么比这更复杂的,就像下面的那样:
Entry Parent Child
1 Josh Sam
2 Josh Mark
3 Sue Tim
4 Sue Cat
5 Sue Max
6 Dave Tia
答案 0 :(得分:0)
假设您的people
表格结构为:
id name surname parent_id
------------------------------------
1 John Smith NULL
2 Ann Kowalsky NULL
3 Matt Smith 1
4 Jane Smith 1
5 Rob Kowalsky 2
(其中NULL
表示在此表行中没有为此人注册的父级)
并且您只查找父母的直接子项,那么查询可能如下所示:
SELECT
parents.id AS parent_id,
parents.name AS parent_name,
parents.surname AS parent_surname,
children.id AS child_id,
children.name AS child_name,
children.surname AS child_surname
FROM
people AS parents
LEFT OUTER JOIN people AS children
ON children.parent_id = parents.id
我希望这至少会有所帮助。