2014-05-21 26 views
0

我有一個包含項目的目錄類別。主目錄頁面必須顯示包含每個類別內部項目數量的類別列表,並且「預覽」圖片必須是同一類別中查看次數最多的項目。如何在MySQL中獲取父母的觀看次數最多的孩子

catalogue_cat

  • id_cat

catalogue_item

  • id_item
  • picture_url
  • 次(INT)

    SELECT catalogue_cat.id_cat,catalogue_cat.name,COUNT(catalogue_item.id_item)爲Q FROM catalogue_cat LEFT JOIN catalogue_item ON catalogue_item.id_cat = catalogue_cat.id_cat GROUP BY catalogue_cat.id_cat ORDER BY catalogue_cat.name

這只是讓我與該項目數類別列表。我仍然需要每個類別中觀看次數最多的項目的圖片。有任何想法嗎?謝謝!

回答

1

您已經做了group by,所以最好的辦法是substring_index()/group by方法:

SELECT c.id_cat, c.name, COUNT(i.id_item) AS q, 
     SUBSTRING_INDEX(GROUP_CONCAT(i.url ORDER BY i.views DESC), ',', 1) as MostViewedURL 
FROM catalogue_cat c LEFT JOIN 
    catalogue_item ci 
    ON i.id_cat = c.id_cat 
GROUP BY c.id_cat 
ORDER BY c.name; 

注意,這個假設URL的沒有在他們的逗號。如果他們這樣做,你將需要找到另一個分隔符。

+0

picture_url確實是一個文件名,我在php中添加了指向該文件名的完整URL。我現在正在嘗試你的方法... – andufo