2014-03-04 56 views
1

因此,我有這張專輯和圖像表。圖像有一個名爲album_id的列,它取得了他們正在坐的相冊ID。到現在爲止還挺好。根據MySQL中的外鍵選擇第二個表上的行數

現在我需要從相冊表中選擇信息,並且還需要每個相冊行的圖像數量。我嘗試使用LEFT JOINCOUNT(*),但它只會返回一行,這對我的情況來說效率非常低。

這是我使用的不會返回任何計數相關原始查詢:

SELECT album_id, album_name, album_preview, album_owner, album_time, album_access 
FROM imgzer_albums WHERE album_owner = SOME_VALUE 

這是與LEFT JOIN查詢:

SELECT a.album_id, a.album_name, a.album_preview, a.album_owner, a.album_time, a.album_access, COUNT(i.*) AS images 
FROM imgzer_albums a 
LEFT JOIN imgzer_images i 
    ON a.album_id = i.album_id 
WHERE album_owner = SOME_VALUE 

我如何獲得的圖像,計數對於每個相應的相冊ID而不僅限於一個結果?

+0

你不覺得你缺少了'組by'條款? – KrazzyNefarious

回答

0

嘗試這個

SELECT a.album_id, a.album_name, a.album_preview, a.album_owner, a.album_time, a.album_access, COUNT(i.*) AS images 
FROM imgzer_albums a 
LEFT JOIN imgzer_images i 
    ON a.album_id = i.album_id 
WHERE album_owner = SOME_VALUE 
GROUP BY a.album_id 
+0

您必須對每個選定的字段進行分組。 – wumpz

+0

簡單而有效!謝謝! @wumpz這不是MSSQL,所以在這裏我不需要。那麼,它的工作原理如此.. – Aborted

0

不進行分組的解決方案是一個相關查詢:

SELECT a.album_id, a.album_name, a.album_preview, a.album_owner, a.album_time, a.album_access, 
(select COUNT(*) from imgzer_images i where a.album_id = i.album_id) AS images 
FROM imgzer_albums a 
WHERE album_owner = SOME_VALUE 
相關問題