2016-09-09 11 views
0

ここに私の問題があります。私はこれらの要求で、各ユーザーに属しているどのように多くの著作またはどのように多くのコメントカウントする方法を知っている3テーブルのカウント要求

AUTHORS 
    id (INT, PRIMARY KEY) 
    name (VARCHAR) 

WRITINGS 
    id (INT, PRIMARY KEY) 
    content (TEXT) 
    author_id (INT, FOREIGN KEY) 

COMMENTS 
    id (INT) 
    commentary (TEXT) 
    author_id (INT, FOREIGN KEY) 

のような3つのテーブルを持っている:

SELECT A.id, A.name, COUNT(W.id) 
FROM AUTHORS AS A 
LEFT JOIN WRITINGS AS W 
    ON A.id = W.author_id 
GROUP BY A.id; 

SELECT A.id, A.name, COUNT(C.id) 
FROM AUTHORS AS A 
LEFT JOIN COMMENTS AS C.author_id 
    ON A.id = C.author_id 
GROUP BY A.id; 

しかし、これら2つのカウントを取得する方法があります一意の要求で(文章やコメント)

その他の課題:同じ質問ですが、ネストされたリクエストはありません。事前

+0

私は、最も簡単な方法は2つの従属サブクエリを使うことだと思います。 – LSerni

答えて

0

おかげで、サブクエリでのクエリのいずれかを入れて、他の人とそれに参加します。

SELECT A.id, A.name, IFNULL(COUNT(W.id), 0) AS writing_count, IFNULL(C.comment_count, 0) AS comment_count 
FROM AUTHORS AS A 
LEFT JOIN WRITINGS AS W 
    ON A.id = W.author_id 
LEFT JOIN (
    SELECT author_id, COUNT(*) AS comment_count 
    FROM COMMENTS 
    GROUP BY author_id) AS C 
    ON A.id = C.author_id 
GROUP BY A.id 
+0

**ありがとうございました**、私の本当の(もっと複雑な)表では完璧に動作します。今では、ストアドプロシージャなどを作成することができます。 – HarvestR

関連する問題