2

2つのテーブルを結合してカウントを返すSQLステートメントを作成しようとしています。カウントするアイテムが見つからない場合でも、すべてのレコードを返す必要があります。

私がこれをするだけなら:

SELECT s.subject,s2.subject from subjects s 
left join subjects s2 on s.parent_id = s2.id

大丈夫ですが、数えられません。私はこれを行うことによって、私が頼りにする必要がある他のテーブルにそれを結合しようとしました:

SELECT s.subject,s2.subject,count(q.id) from subjects s 
left join subjects s2 on s.parent_id = s2.id 
join questions q on q.subject_id = s.id

しかし、まったく意味のない結果が1つだけ表示されます。

4

2 に答える 2

1

質問がゼロの場合はCOUNT、サブクエリにを追加する必要があります。そうすると、次LEFT JOINのような結果が得られます。

SELECT s.subject, s2.subject, NVL(q.q_count,0) as question_count 
FROM subjects s 
LEFT JOIN subjects s2 ON s.parent_id = s2.id 
LEFT JOIN (SELECT q.subject_id, count(1) as q_count 
  FROM questions q
  GROUP BY q.subject_id) q ON q.subject_id = s.id
于 2012-04-08T13:13:15.347 に答える
1

これを試して:

 SELECT s.subject, s2.subject, COUNT(q.id) 
 FROM subjects s 
 LEFT JOIN subjects s2 ON s.parent_id  = s2.id 
 LEFT JOIN questions q ON q.subject_id = s.id 
 GROUP BY s.subject_id, s2.subject_id, q.subject_id
于 2012-04-08T13:19:23.890 に答える