Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Подсчет количества записей и UNION


Автор: Колесо 28.4.2014, 13:22
Нужно подсчитать количество записей в разных таблицах. 
Составил несколько простых запросов и объеденил их через UNION. 
Но почему то вывод осуществляется в порядке возрастания, а не в том порядке который указан в тексте запроса, т.е. не представляется возможным понять какая цифра к какому запросу относится. Можно ли как то отключить эту сортировку?

Автор: Akina 28.4.2014, 16:07
Цитата(Колесо @  28.4.2014,  14:22 Найти цитируемый пост)
Можно ли как то отключить эту сортировку? 

Можно ли отключить то, чего нет?

Цитата(Колесо @  28.4.2014,  14:22 Найти цитируемый пост)
вывод осуществляется в порядке возрастания, а не в том порядке который указан в тексте запроса

А где он, текст запроса-то?

Автор: Колесо 29.4.2014, 09:33
Код

(SELECT COUNT (*)
FROM table1)

    UNION
    
(SELECT COUNT (*)
FROM table2)

    UNION
    
(SELECT COUNT (*)
FROM table3)

Допустим в первой таблице хранится 100, во второй - 300, в третьей - 200. 
Результатом запроса будет:
100,
200,
300.

А хотелось бы получить: 100, 300, 200. 

СУБД MsSQL. 

Автор: Akina 29.4.2014, 09:39
Цитата(Колесо @  29.4.2014,  10:33 Найти цитируемый пост)
Результатом запроса будет:100,200,300.

Завтра может быть и другой порядок smile ведь ORDER BY не указан...

Цитата(Колесо @  29.4.2014,  10:33 Найти цитируемый пост)
хотелось бы получить: 100, 300, 200. 

Код

SELECT 1, COUNT (*) FROM table1
UNION 
SELECT 2, COUNT (*) FROM table2
UNION
SELECT 3, COUNT (*) FROM table3
ORDER BY 1

Код

SELECT q.cnt
FROM
  (SELECT 1 num, COUNT (*) cnt FROM table1
   UNION 
   SELECT 2, COUNT (*) FROM table2
   UNION
   SELECT 3, COUNT (*) FROM table3
  ) q
ORDER BY q.num

Автор: Колесо 29.4.2014, 10:10
Спасибо, работает. 

Первый вариант даже без ORDER BY 1

Автор: Akina 29.4.2014, 11:36
Цитата(Колесо @  29.4.2014,  11:10 Найти цитируемый пост)
даже без ORDER BY 1 

Вот что. Бросай программировать и иди учи теорию и основы реляционных БД и реализации реляционных СУБД. Ты несёшь такой бред, что слушать противно! и когда-нибудь это тебе выйдет более чем боком - если вовремя не одумаешься.

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