次のように2つのテーブルがあります。
table_a: id, title
table_b: id, table_a_id, status
table_a の各値に対して table_b のエントリの総数と、table_a を参照しない table_b のエントリの総数を選択したいと考えています。
たとえば、table_a に次の値があるとします。
{id, title}
(1, "Value 1")
(2, "Value 2")
(3, "Value 3")
table_b には次のエントリがあります
{id, table_a_id, status}
(1, 1, 'open')
(2, 1, 'closed')
(3, -, 'open')
(4, 2, 'closed')
私が取得しようとしているのは、次のようなものです。
("Value 1", 2)
("Value 2", 1)
("Value 3", 0)
(-, 1)
null がなければ、これを次のように書くことができます。
SELECT table_a.id, table_a.title, count(table_b.id)
FROM table_a
LEFT JOIN table_b ON table_a.id = table_b.table_a_id
GROUP BY table_a.id, table_a.title
ただし、table_a を参照しない table_b のエントリの値はわかりません。結合を逆にすると、table_b からすべての値を取得できますが、table_a からは取得できません。1 つのクエリで両方を取得するにはどうすればよいですか?