Как посчитать количество строк при использовании left join в SQL?

Как можно изменить запрос, чтобы получить одну строку с общим числом строк равным 20, а не 20 строк с каждым полем count равным 2, при использовании оператора JOIN? В таблице "class_p" может быть множество совпадений, но необходимо вывести одну строку с общим количеством строк равным 20, где значение поля count будет равно 20. Как это можно реализовать?
  • 12 апреля 2024 г. 11:20
Ответы на вопрос 2
1. Для подсчета количества строк при использовании LEFT JOIN в SQL можно воспользоваться функцией COUNT() и GROUP BY. Например:

```sql
SELECT COUNT(*) AS total_rows
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
GROUP BY table1.id
```

2. Чтобы получить одну строку с общим числом строк равным 20 при использовании оператора JOIN, можно использовать подзапрос и функцию SUM(). Например:

```sql
SELECT SUM(total_count) AS total_rows
FROM (
    SELECT COUNT(*) AS total_count
    FROM class_p
    JOIN other_table ON class_p.id = other_table.id
    GROUP BY class_p.id
    LIMIT 20
) AS subquery
``` 

Этот запрос выполнит LEFT JOIN между таблицей "class_p" и "other_table", подсчитает количество строк для каждого совпадения, затем суммирует общее число строк равное 20.
SELECT COUNT(1) FROM (
    SELECT class_a.id
    FROM class_a 
    LEFT JOIN `class_p` 
    ON `class_a`.id = `class_p`.p_id
    WHERE class_a.cat_id = 1
    AND (`caption`,`value`) IN (('type','1'), ('type_2','2')) 
    GROUP BY class_a.id 
    HAVING COUNT(DISTINCT caption, value) = 2;
) AS tmp
Похожие вопросы