Объединение трёх запросов в один

212
25 мая 2017, 11:33

У меня есть 3 запроса и в них код очень похож, Можно ли сделать из них 1 запрос?

1) Показывает сколько статей в каждой категории

SELECT category.name, count(question.name) 
FROM category 
LEFT JOIN question 
ON category.id = question.cat_id 
GROUP BY category.name

2) Показывает, сколько вопросов опубликовано в каждом разделе. Если статус = 1, значит опубликовано

SELECT category.name, count(question.status) 
FROM category 
LEFT JOIN question 
ON category.id = question.cat_id  AND question.status = 1 
GROUP BY category.name

3) Показывает, сколько вопросов без ответов, в каждом разделе

SELECT category.name, count(question.answer) 
FROM category 
LEFT JOIN question 
ON category.id = question.cat_id  AND question.answer = "" 
GROUP BY category.name
Answer 1
SELECT category.name
     , COUNT(question.name) 
     , SUM(question.status = 1)
     , SUM(question.answer = "")
FROM category 
LEFT JOIN question 
ON category.id = question.cat_id 
GROUP BY category.name

Запрос написан для MySQL. Если используется другая СУБД, замените SUM(condition) на SUM(CASE WHEN condition THEN 1 ELSE 0 END).

Answer 2

Должна получиться выборка:

SELECT (SELECT ...), (SELECT ...), ...
READ ALSO
Qt. Как сохранить настройки языка в QSettings?

Qt. Как сохранить настройки языка в QSettings?

Например, пользователь выбрал русский язык для интерфейса приложения и при последующих запусках интерфейс загружался на русском

259
Вывод русских символов в программе C++

Вывод русских символов в программе C++

Привет всемЕсть программа для игры и шрифты для вывода текста в меню берутся из самой игры, шрифты эти поддерживают русский язык точно, я проверял

332
QT creator Linux ошибка компиляции

QT creator Linux ошибка компиляции

Пишу код в Qtcreator на Linux подключены библиотеки "safelib С" для работы bounds-checking при компиляции пишет ошибку

312