繁体   English   中英

如何修改此MySQL查询以获得特定的数据结构?

[英]How can I modify this MySQL query to get a particular data structure?

如果我有两个简单的表:

相片 :

photoid | filename            | albumid
1       | something.jpg       |    1
2       | somethingelse.jpg   |    1

还有一个专辑表:

  albumid   | album_name        | owner_id
    1       | My Holiday 2012   |    1
    2       | My Holiday 2013   |    6

我想获取给定owner_id所有相册中包含的所有照片

我可以执行以下操作:

select albums.*, photos.*
from photo_albums as albums
left join photos as photos
on albums.albumid = photos.albumid
where albums.owner_id = :owner_id

对于每张照片以及相关的相册数据,这将返回2行。

但是我想做的是每张专辑只返回一行。 照片行嵌套在每个相册行中。

返回类似于以下内容的输出:

[{
    albumid : 1,
    album_name : My Holiday 2012,
    owner_id : 1,
    photos : {
                 photoid : 1,
                 filename : something.jpg
             },
             {
                 photoid : 2,
                 filename : somethingelse.jpg
             }   
}]

在MySQL查询本身中,是否有一种简单有效的方法来执行此操作? 如果可以,怎么办? 或者,我是否更好地从原始查询中获取完整的行数据,并通过遍历php中的行将数据构造到此输出中?

提前致谢

您只是无法通过修改SQL查询来做到这一点。

我看到两种方法可以实现您的目标:

  1. 对输出进行后处理以构建所需的数组结构。
  2. 使用ORM (对象关系映射)将查询结果自动映射到对象。 例如,请参阅“教义”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM