См. Пример данных ниже.
Вот что у меня есть до сих пор.
SELECT
table1.stuff,
COUNT(table1.id) AS row_count,
COUNT(comment_table.id) AS comment_count
FROM table1
LEFT JOIN comment_table
ON table1.id = comment_table.page_id
AND comment_table.page_type = 'nofun'
UNION
SELECT
table2.stuff,
COUNT(table2.id) AS row_count,
COUNT(comment_table.id) AS comment_count
FROM table2
LEFT JOIN comment_table
ON table2.id = comment_table.page_id
AND comment_table.page_type = 'fun'
Пример таблицы данных1:
id stuff
1 the stuff
2 other stuff
Пример таблицы данных2:
id stuff
1 the stuff still
2 other stuff still
Пример данных comment_table:
id page_id page_type comment
5 1 fun Ello
6 2 nofun hey janis
Желаемые результаты:
stuff comment_count row_count
the stuff still 1 2
other stuff 1 0
логика выборочных данных: я хотел бы вернуть все строки из таблицы1 и таблицы2.Я также хотел бы получить общее количество комментариев из comment_table, связанных с каждой строкой из table1 и table2, и, наконец, посчитать общее количество строк, возвращаемых из table1 и table2.
table1 и table2 имеют "page_type"в этом случае table1 - это «nofun», а table2 - «весело».Каждая строка comment_table связана с таблицей table1 или table2 по типу "page_type" И "page_id", идентификатору строки из table1 или table2.
идентификатор table1: 2 имеет один комментарий (идентификатор comment_table: 6) и идентификатор table2: 1 имеет один комментарий (id_table comment: 5).
В таблице желаемых результатов показаны две строки с примерами 'stuff' из table1 и table2, а также количество комментариев для каждой строки и общее количество строк.
Я не верю, что полностью понимаю левое соединение.Как я могу достичь своей цели .?