我有一個工作得很好的查詢。讓我從它開始:向SQL中的查詢添加子查詢
編輯: SQL已更新。我每行都得到0
。
SELECT i.item, i.user_id, u.username,
(COALESCE(r.ratetotal, 0)) AS total,
(COALESCE(c.commtotal, 0)) AS comments,
(COALESCE(r.rateav, '50%')) AS rate,
(COALESCE(x.wasRated, '0')) AS wasRated
FROM items AS i
LEFT JOIN master_cat AS c
ON (c.cat_id = i.cat_id)
LEFT JOIN users AS u
ON u.user_id = i.user_id
LEFT JOIN
(SELECT item_id,
COUNT(item_id) AS ratetotal,
AVG(rating) AS rateav
FROM ratings GROUP BY item_id) AS r
ON r.item_id = i.item_id
LEFT JOIN
(SELECT item_id,
COUNT(item_id) AS commtotal
FROM reviews GROUP BY item_id) AS c
ON c.item_id = i.item_id
LEFT JOIN
(SELECT xu.user_id, ra.item_id, '1' AS wasRated
FROM users AS xu
LEFT JOIN ratings AS ra
ON ra.user_id = xu.user_id
WHERE xu.user_id = '1') AS x
ON x.user_id = u.user_id
AND x.item_id = r.item_id
WHERE c.category = 'Movies'
ORDER by i.item ASC;
我需要一個更多的功能添加到它,在那裏你看到AS x
基本上,這裏有三個表是很重要的。 items
,reviews
和ratings
。在頂部,您會看到有子查詢正在統計諸如每個項目的平均值和總計。
我需要一個連接到user_id
,item_id
和rate_id
(在ratings
)的最終查詢。在最終的結果中,它列出了每個項目和統計數據,我想再列一個列,如果登錄用戶對它進行了評分,那麼這個列是簡單的true或false。所以,我需要的是這樣的:
SELECT ???
FROM ratings AS r
WHERE r.user_id = '{$user_id}'
(的登錄用戶user_id
從PHP.`傳遞)
我怎樣才能使一個子查詢,讓我的信息的最後一點,但把它在父查詢中的每一行項目?
如果您發佈表的SQL DDL以及一些SQL INSERT語句,您可能會得到更多的回覆。 – 2013-02-16 22:33:26