在1:n(一对多)关系中排序记录
-
12-09-2019 - |
题
我有2张桌子:
+-----------+ +------------------------------------+--------------+
+ persons | | photos |
+-----------| +---------------------------------------------------+
+ id | name + | id | person_id | path | title |
+-----------+ +---------------------------------------------------+
+ 1 | Tom + | 1 | 2 | ~fred/me.png | Yo, it's Me! |
+ 2 | Fred + | 2 | 2 | ~fred/my_wife.png | I'm Susan |
+ 3 | Jack + | 3 | 1 | ~tom/my_dog.jpg | a woof |
+-----------+ +---------------------------------------------------+
有这种关系:
人Hasmany Photo <->照片属于人
我想用他们的照片列出所有的人(即使某人没有像杰克这样的人,也可以按照照片的标题订购。
我应该为此编写什么SQL查询(MySQL)?我可以在一对一的关系中使用加入吗?
PS:作为信息,我希望能够用记录构造这样的数组:
$persons = Array(
[0] => Array(
[id] => 1,
[name] => 'Tom',
[Photo] => Array(
[0] => Array(
[id] => 3,
[person_id] => 1,
[path] => '~tom/my_dog.jpg',
[title] => 'a woof' // 1st
)
)
),
[1] => Array(
[id] => 2,
[name] => 'Fred',
[Photo] => Array(
[0] => Array(
[id] => 2,
[person_id] => 2,
[path] => '~fred/my_wife.png',
[title] => "I'm Susan" // 2nd
),
[0] => Array(
[id] => 1,
[person_id] => 2,
[path] => '~fred/me.png',
[title] => "Yo, it's Me!" // 3rd
)
)
),
[2] => Array(
[id] => 3,
[name] => 'Jack',
[Photo] => Array()
)
)
非常感谢!
解决方案
Select *
From persons
left outer join photos on person.id=photos.person_id
order by photos.title
不隶属于 StackOverflow