2013-02-03 25 views
0

我有一個相當複雜的SQL聲明我正在處理。這裏是我在哪裏:在特定標準中選擇SQL中的所有行

SELECT c.category 
       FROM master_cat as c 
     LEFT JOIN 
      (
       SELECT cat_id, user_id COUNT(cat_id) favoriteCat 
       FROM ratings 
       GROUP BY user_id 
      ) a ON a.cat_id= c.cat_id 
     LEFT JOIN users AS u 
      ON u.user_id AND a.user_id 

WHERE u.username = '{$user}' LIMIT 1 

此聲明不完整。我在這裏錯過了一箇中間表。 cat_id實際上並不在ratings中。但items_id來自名爲items的表,並且cat_id也在該表中。

所以我試圖做的是這樣的:

SELECT rating FROM ??? GROUP BY cat_id where u.user=$user 

我想,也許這樣做的唯一的事情是itemsfavoriteCat另一個LEFT JOIN,但我不知道這是允許的。

+0

你正在使用MySQL?請添加相關的DBMS標籤。你還可以添加一個(簡單的)表格方案與相關的列?我認爲你的描述包含了所有的信息,但它往往有點神祕。 – Jacco

+0

是MySQL。對不起 – KickingLettuce

+1

是的,你可以做內部或左邊加入,只是嘗試。將它加入'''子查詢中的'ratings' – Bulat

回答

0

我得太多了這一點,這是我的最終解決方案:

SELECT c.category, count(r.rating) AS totalCount 
FROM ratings as r 
LEFT JOIN items AS i 
    ON i.items_id = r.item_id 
LEFT JOIN users AS u 
    ON u.user_id = r.user_id 
LEFT JOIN master_cat AS c 
    ON c.cat_id = i.cat_id 
WHERE r.user_id = '{$user_id}' 
GROUP BY c.category 
ORDER BY totalCount DESC 
相關問題