0

我正在处理一个相当复杂的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

我唯一能想到的可能是另一个 LEFT 加入itemsinside favoriteCat,但我不确定这是否允许。

4

1 回答 1

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
于 2013-02-04T16:44:51.680 回答