Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Можно ли эти запросы собрать в один?


Автор: DenWPF 20.10.2010, 15:04
Код

SELECT count(id) FROM Сalculation  WHERE id_Person = 23 Group by id_Person

SELECT count(id) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 2 Group by id_Person

SELECT sum(price) FROM Сalculation  WHERE id_Person = 23 Group by id_Person

SELECT sum(price) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 2 Group by id_Person

SELECT sum(price) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 1 Group by id_Person

ну если все нельзя, то хотя бы некоторые.

Автор: skyboy 20.10.2010, 15:50
Код

SELECT count(id), sum(price) FROM Сalculation  WHERE id_Person = 23 Group by id_Person

SELECT count(id), sum(price) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 2 Group by id_Person


Добавлено через 28 секунд
можно и все в один собрать. через union all.

Автор: DenWPF 20.10.2010, 15:57
а по производительности? и пример можно?)

Автор: Zloxa 20.10.2010, 16:19
Цитата(skyboy @  20.10.2010,  15:50 Найти цитируемый пост)

Код

SELECT count(id), sum(price) FROM Сalculation  WHERE id_Person = 23 Group by id_Person
SELECT count(id), sum(price) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 2 Group by id_Person


Код

SELECT count(id)
   , sum(price) 
   , count(case when id_Status_Payment = 2 then id end) count_payment2
   , sum(case when id_Status_Payment = 2 then price end) sum_payment2
FROM Сalculation  
WHER id_Person = 23 
Group by id_Person

Автор: tishaishii 25.10.2010, 19:48
Код

SELECT count(id) FROM Сalculation  WHERE id_Person = 23 Group by id_Person
union all
SELECT count(id) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 2 Group by id_Person
union all
SELECT sum(price) FROM Сalculation  WHERE id_Person = 23 Group by id_Person
union all
SELECT sum(price) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 2 Group by id_Person
union all
SELECT sum(price) FROM Сalculation  WHERE id_Person = 23 and id_Status_Payment = 1 Group by id_Person


Код

SELECT
  count(id) `c1`,
  sum(id_Status_Payment = 2) `c2`,
  sum(price) `s1`,
  sum(price*(id_Status_Payment = 2)) `s2`,
  sum(price*(id_Status_Payment = 1)) `s3`
from
  Сalculation
where
  id_Person = 23

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)