Drewが派生テーブルTを持っているのは正しいですが、あなたがコースにいるときに役立ついくつかの詳細を追加しようとします。
- あなたが派生テーブルT
- 外側のクエリ(第一選択)
- 内部クエリ(第2ブラケットで選択)
- 内側クエリはユーザのためのuのテーブルエイリアスを使用しています。
- 内クエリの最終列は、外側のクエリがのみ2列内のクエリの最終的なレコードセットを使用するように制約されているのでuserDvdテーブルとのuserId
- にdvdIdsのカウントであるdvdIdがために利用可能です選択したものには、エラーを受け取った名字、性別、性別は含まれません。
クエリを同じにしたいが、それらの列を使用する場合は、派生テーブルをユーザーテーブルに戻して、必要な列を取得することができます。技術は、元のテーブルに参加する
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
;
あなたのクエリは意味をなさない。サンプルデータと望ましい結果は、あなたがしたいことを伝えるのに役立ちます。 –