powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UNION или как получить 3 COUNT в 1 запросе
9 сообщений из 9, страница 1 из 1
UNION или как получить 3 COUNT в 1 запросе
    #39772452
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT QG.NAME, QG.ID, COUNT(L2T.M_SWABOID) as S1
FROM QUERYGROUP QG, QGABONS QGA, L2TAG L2T
WHERE QG.ENABLE = 1
  AND QG.ID = QGA.QGID
  AND QGA.ENABLE = 1
  AND QGA.ABOID = L2T.M_SWABOID
GROUP BY QG.NAME, QG.ID
UNION
SELECT QG.NAME, QG.ID, COUNT(L2T.M_SWABOID) as S2
FROM QUERYGROUP QG, QGABONS QGA, L2TAG L2T
WHERE QG.ENABLE = 1
  AND QG.ID = QGA.QGID
  AND QGA.ENABLE = 1
  AND QGA.ABOID = L2T.M_SWABOID
  AND L2T.QUERYSTATE=0
GROUP BY QG.NAME, QG.ID
UNION
SELECT QG.NAME, QG.ID, COUNT(L2T.M_SWABOID) as S3
FROM QUERYGROUP QG, QGABONS QGA, L2TAG L2T
WHERE QG.ENABLE = 1
  AND QG.ID = QGA.QGID
  AND QGA.ENABLE = 1
  AND QGA.ABOID = L2T.M_SWABOID
  AND L2T.QUERYSTATE=2
GROUP BY QG.NAME, QG.ID



Работает правильно, вот только выдает значения S1, S2 и S3 в одном столбце, а мне нужно чтобы в трех разных.
Различаются только добавлением условия во втором и третьем блоке (AND L2T.QUERYSTATE=0) и (AND L2T.QUERYSTATE=2).
Что-то не могу допертачить %(
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772454
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй кассу, Люк!

(use CASE, Luke)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772456
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg,

CASE тебе в помощь
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772465
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в догонку ещё добавлю - в таких запросах нельзя просто UNION использовать, иначе потеряешь часть каунтов.
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772497
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заглядывать под спойлер после самостоятельного решения лабы.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT QG.NAME, QG.ID, 
COUNT(L2T.M_SWABOID) as S1,
COUNT(case when L2T.QUERYSTATE=0 then L2T.M_SWABOID) as S2,
COUNT(case when L2T.QUERYSTATE=2 then L2T.M_SWABOID) as S3

FROM QUERYGROUP QG, QGABONS QGA, L2TAG L2T
WHERE QG.ENABLE = 1
  AND QG.ID = QGA.QGID
  AND QGA.ENABLE = 1
  AND QGA.ABOID = L2T.M_SWABOID
GROUP BY QG.NAME, QG.ID

...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772608
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за помощь, тоже была мысль case использовать, только вот никак не мог допереть куда сунуть условие и соответственно сами данные для счетчика ))
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772611
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyЗаглядывать под спойлер после самостоятельного решения лабы.
COUNT(case when L2T.QUERYSTATE=0 then L2T.M_SWABOID) as S2,
COUNT(case when L2T.QUERYSTATE=2 then L2T.M_SWABOID) as S3
[/src][/spoiler]

Пришлось чуть подправить, не хотела проглатывать

COUNT(case when L2T.QUERYSTATE=0 then L2T.M_SWABOID end) as S2,
COUNT(case when L2T.QUERYSTATE=2 then L2T.M_SWABOID end) as S3
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772620
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg,

"Пришлось". Не перенапрягся?
Иван специально убирает некоторые детали, против совсем уж ленивых.
...
Рейтинг: 0 / 0
UNION или как получить 3 COUNT в 1 запросе
    #39772759
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / UNION или как получить 3 COUNT в 1 запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]