2017-11-26 9 views
0
SELECT code_c,count(*) FROM photographs WHERE code_c IN (
    SELECT code_c FROM collections WHERE id_u IN(
     SELECT id_u FROM users WHERE activated = 1 
    ) 
) 
GROUP BY code_c 

私たちは、コレクション、写真、およびユーザーを持っています。ユーザーにはコレクションがあり、コレクションには写真がありますネストされたクエリ(SQL)から列の値を保持する

このクエリに基づいて、基本的には、「アクティブ化」されているユーザーのために各コレクションにいくつの写真があるかを知りたいと考えています。質問は、 "id_u"列を "users"(内部クエリ)クエリから写真クエリ(外部クエリ)で使用するにはどうすればよいのでしょうか。

注:JOINを使用できないとしましょう。私はOracleを使用しています。

ありがとうございます!

+0

あなたの質問を編集し、サンプルデータと希望する結果を提供してください。 –

答えて

0

このような意味ですか?

SELECT code_c, max(sq.id_u), count(*) FROM photographs WHERE code_c IN (
    SELECT code_c FROM collections WHERE id_u IN(
     SELECT id_u FROM users WHERE activated = 1 
    ) 
) as sq 
GROUP BY code_c 
0

複数のネストされたクエリを使用しないでください。 joingroup byを使用してください。私が正しく理解していれば、あなたは望みます:

SELECT c.code_c, count(*) as num_photos, 
     sum(case when u.activated = 1 then 1 else 0 end) as num_activated 
FROM collections c JOIN 
    users u 
    ON c.id_u = u.id_u JOIN 
    photographs p 
    ON p.code_c = c.code_c 
GROUP BY c.code_c 
関連する問題