2013-04-09 61 views
0

如果我有兩個簡單的表:如何修改這個MySQL查詢來獲取特定的數據結構?

照片:

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中的行來將數據構造到此輸出中?

在此先感謝

回答

1

你只是不能通過修改SQL查詢。

我看到兩種方式來實現自己的目標:

  1. 後處理您的輸出建立所需的陣列結構。
  2. 使用ORM(對象關係映射)自動將查詢結果映射到對象。例如,請參見Doctrine
+0

好。這就是我需要確定的一切。謝謝@barbashov我會在你能夠的時候給你答案。 :) – gordyr 2013-04-09 17:50:36