2012-07-07 79 views
0

我不確定這是否甚至可以直接從MySQL查詢(而不處理數據後),但我一直在思考一些事情......檢索並格式化所有在MySQL結果列中有多條記錄

假設我們有一張桌子,作者和另一本書。作者可以有許多書籍,書籍表中的author_id列表明瞭這一點。

是否有執行的查詢方式:

1)獲取單個作者的記錄,與列名「圖書」持有的賬面記錄的數組,屬於作者。

2)結果相同,但對於數據庫中的所有作者。

關於這是否可能的任何輸入,以及任何方法將不勝感激!

更新

這是第一個查詢的期望輸出的一個例子:

stdClass Object 
(
[id] => 1 
[name] => Test Author 
[age] => 28 
[books] => Array 
    (
     [0] => stdClass Object 
      (
       [title] => Book 1 
       [id] => 1 
      ) 

     [1] => stdClass Object 
      (
       [title] => Book 2 
       [id] => 2 
      ) 

    ) 

) 

回答

1

1)是的,GROUP_CONCAT()可以做到這一點(雖然我不,這將是最好的方式去做吧)。

2)是的,GROUP BY作者

+0

我不相信GROUP_CONCAT就是我要找的,因爲這concats單打行成一個字符串,現在所有記錄到一個記錄數組 - 檢查我的編輯爲例來自查詢的期望結果。 – Sam 2012-07-07 00:37:29

+0

您可以在PHP中使用['implode()'](http://us3.php.net/manual/en/function.implode.php)輕鬆地將其轉換爲數組。這是你最接近MySQL的地方。 – 2012-07-07 00:39:24

+0

雖然我只有一個ID數組 - 沒有其他圖書信息。我不太樂觀,我會爲這個問題找到一個MySQL解決方案,我想我可能不得不繼續使用JOINS並在查詢執行後過濾/重構數據。儘管感謝您的答案! – Sam 2012-07-07 00:42:31

相關問題