Вывод из таблицы одним запросом по разным условиям

292
21 декабря 2016, 01:59

Есть таблица items;

id --- status
-------------
1  ---   0
2  ---   1
3  ---   1
4  ---   0
5  ---   1

Нужно ОДНИМ запросом, вывести кол-во строк со статусом: 0 (их 2) и кол-во строк со стаутсом 1( их 3). Пробовал через UNION - но поля именует не так как нужно.

SELECT count(*) AS `status_0` FROM `itemы` WHERE `status` = 0
UNION
SELECT count(*) AS `status_1` FROM `itemы` WHERE `status` = 1
Answer 1

Если я правильно понял, то Вам нужно получить одну строку с двумя колонками? А две строки с одной колонкой Вас не устраивает. Тогда это делается так

SELECT SUM(`status_0`) AS `status_0`, SUM(`status_1`) AS `status_1`
FROM (
  SELECT count(*) AS `status_0`, 0  AS `status_1` FROM `items` WHERE `status` = 0
  UNION
  SELECT 0  AS `status_0`, count(*) AS `status_1` FROM `items` WHERE `status` = 1
)

Но я бы делал так

SELECT status, COUNT(*) FROM items GROUP BY status
Answer 2
select sum(case status when 0 then 1 else 0 end) status_0,
sum(case status when 1 then 1 else 0 end) status_1
from items
Answer 3

поля в таблице именуются по первому запросу если я не ошибаюсь, возможно стоит добавить столбец константу SELECT 'status_0', count(*) AScntFROMitemыWHEREstatus= 0 UNION SELECT 'status_1',count(*) AScntFROMitemыWHEREstatus= 1 если нужна одна запись

SELECT count(*) AScnt_0, c1.cnt_1 FROM itemы Left join (select count(*) AScnt_1fromitemыwherestatus= 1) c1 on 1 = 1 WHERE status = 0

READ ALSO
Сервлет для web приложения

Сервлет для web приложения

Есть БД MySQL с таблицей mytable (column ID, column NAME), пишу приложение для вывода в файл HTML результатов выполнения хранимых процедур (вывести таблицу,...

333
Неполучения исправить ошибку [дубликат]

Неполучения исправить ошибку [дубликат]

На данный вопрос уже ответили:

252
Выборка из Many-to-many таблиц по заданному ID

Выборка из Many-to-many таблиц по заданному ID

Таблицы: Животные, Клетки, Смотрители

247