2012-02-06 55 views
0

對不起,夥計們。我在mysql中很新,但是我需要從兩個表中獲取和合並數據。來自mysql中2個表的分組數據

table_a 

ID | TITLE | CONTENT | DATE 

table_b 

ID | POST_ID | IMAGE 

這裏是我的代碼

$query = "SELECT table_a.*, table_b.IMAGE FROM table_a 
LEFT JOIN table_b 
     ON table_a.ID = table_b.POST_ID 
     ORDER BY table_a.DATE"; 
$mysql_result = mysql_query($query); 

$result = array(); 
while ($row = mysql_fetch_assoc($mysql_result)) { 
    $result[] = $row; 
} 
print json_encode($result); 

然而,對於那些表-A其中記錄了超過1個IMAGE,我的JSON包含重複用不同的圖片內容。

是否有任何方法將合併爲具有相同ID的IMAGE到單個記錄中?

感謝您的幫助!

+0

你是什麼意思「合併具有相同ID的圖像到單個記錄」?我懷疑你有多個不同ID的圖像,但相同的POST_ID - 因此你得到多個記錄。你想要達到什麼樣的行爲?如果您在同一篇文章中有多張圖片,您需要獲得哪些結果? – 2012-02-06 11:53:18

+0

感謝您的回覆Aleks。我需要的結果就像 [{「ID」:「1」,「TITLE」:「Hello World」,「DATE」:「2011-08-10」,「CONTENT」:「我是新手。」, 「圖像」: 「A.JPG,B.JPG,C.JPG」},{ 「ID」: 「2」 ...}。所以我可以通過在jQuery中解析顯示縮略圖和標題/內容。 – louis 2012-02-06 12:02:06

回答

0

如果我理解正確,你希望從table_b中有所有的字段,並且只有一個(可能是組合的)字段。

首先,你必須決定你想要得到什麼,如果你有一個以上的圖像更多:

  • 只有1個圖像?使用MIN(table_b.IMAGE)MAX(table_b.IMAGE)在 之後SQL
  • 所有圖像由一個逗號?使用GROUP_CONCAT(table_b.IMAGE SEPARATOR ',')或類似下面的SQL

接下來你要明白,讓每table_a.ID只有一排,你必須按table_a.ID,所以我們必須

SELECT 
    table_a.*, 
    <function from above> AS image 
FROM table_a 
LEFT JOIN table_b 
     ON table_a.ID = table_b.POST_ID 
GROUP BY table_a.ID 
ORDER BY table_a.DATE 
+0

感謝您的回覆。順便說一句我現在得到這個錯誤:警告:mysql_fetch_assoc()期望參數1是資源,布爾在...中給出52 line34 – louis 2012-02-06 12:09:37

+0

你有什麼選擇?Pleast post complete SQL – 2012-02-06 12:11:17

+0

請注意,我的回答中存在拼寫錯誤:有「SEAPRATOR」(錯誤),我現在已更正爲「SEPARATOR」 – 2012-02-06 12:12:47

-1

您或許可以使用JOIN 代替LEFT JOIN。這樣只會加載一行

或其他方式

GROUP BY a.ID僅僅指剛ORDER BY之前...

1

可以使用GROUP_CONCAT功能組中的圖像作爲一個逗號分隔的列表在你的帖子表的一列中。

0

我相信你需要的是這樣的:

SELECT table_a.*, GROUP_CONCAT(table_b.IMAGE) FROM table_a 
LEFT JOIN table_b ON table_a.ID = table_b.POST_ID 
GROUP BY table_a.* 
ORDER BY table_a.DATE 

(不知道你是否有拼出GROUP BY條款,單獨列出字段名,還是.*符號將被接受在這裏。)

相關問題