【问题标题】:Sorting records in a 1:n (one-to-many) relationship以 1:n(一对多)关系对记录进行排序
【发布时间】:2009-08-09 19:38:25
【问题描述】:

我有 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       |
+-----------+  +---------------------------------------------------+

在这种关系中:

人有很多照片照片属于人

我想列出所有带有照片的人(即使有人没有照片,比如 Jack),并按照片的标题排序。

我应该为此编写什么 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()
    )
)

非常感谢!

【问题讨论】:

    标签: sql mysql orm entity-relationship one-to-many


    【解决方案1】:
    Select *
    From persons 
    left outer join photos on person.id=photos.person_id
    order by photos.title
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-08
      • 2020-11-16
      • 1970-01-01
      • 2011-04-21
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多