德魯是正確的,你有一個派生表T,但我會嘗試添加一些細節,可能對你有用,因爲你在一門課程。
- 你有一個派生表T
- 外部查詢(第一選擇)
- 內查詢(在括號中的第二選擇)
- 內查詢使用表別名的u爲用戶。
- 內部查詢的最後一列是dvdId,它是userDvd表和用戶標識中的dvdIds的計數
- 由於外部查詢限制使用內部查詢的最終記錄集,因此只有那2列可用選擇並看到他們不包括名字,姓氏或性別你收到錯誤。
如果您希望保持查詢相同,但要使用這些列,您可以將派生表加入用戶表並獲取所需的列。像這樣的:
SELECT userId, firstname, lastname, gender
FROM
(SELECT COUNT(dvdId) dvdId, u.userId
FROM userDVD
JOIN users u ON userDVD.userId = u.userId
GROUP BY userId) as T
INNER JOIN users u2
ON t.user_id = u2.user_id
WHERE gender = 'F';
這種技術的加入回到原來的表是偉大的,當你有優化的聚合是在大表或查找重複的或類似的東西。然而,在你的情況,你真的只需要一個單一的查詢聚合所有的結果你想要的列設置像這樣:
SELECT
u.userId, u.firstname, u.lastname, u.gender, COUNT(d.dvdId) as DVDCount
FROM
userDVD d
JOIN users u
ON d.userId = u.userId
WHERE u.gender = 'F'
GROUP BY
u.userId, u.firstname, u.lastname, u.gender
;
您的查詢沒有任何意義。樣本數據和期望的結果將有助於傳達您想要做的事情。 –