powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / UNION увеличивает количество выводимых строк.
3 сообщений из 3, страница 1 из 1
UNION увеличивает количество выводимых строк.
    #39757293
Kirill_l.s.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Столкнулся с интересным случаем:
Имеется 2 запроса. Первый по оплаченным чекам, второй по неоплаченным. Запросы не имеют уникального идентификатора.
При совмещении этих запросов через UNION, результат увеличивается на 7 лишних строк. С 3366+24 = 3390 до 3397.
При добавлении в запрос Id содержащихся в чеке единиц продаж (часть id имеют дубль из запроса 1 в запросе 2), то результат выводится правильный 3390.

Непонятно, как UNION может увеличивать количество выводимых строк.

Может кто разъяснит подобное поведение программы?

Заранее благодарю!
...
Рейтинг: 0 / 0
UNION увеличивает количество выводимых строк.
    #39757306
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill_l.s.Добрый день!
Столкнулся с интересным случаем:
Имеется 2 запроса. Первый по оплаченным чекам, второй по неоплаченным. Запросы не имеют уникального идентификатора.
При совмещении этих запросов через UNION, результат увеличивается на 7 лишних строк. С 3366+24 = 3390 до 3397.
При добавлении в запрос Id содержащихся в чеке единиц продаж (часть id имеют дубль из запроса 1 в запросе 2), то результат выводится правильный 3390.

Непонятно, как UNION может увеличивать количество выводимых строк.

Может кто разъяснит подобное поведение программы?

Заранее благодарю!
Легко. У Вас есть 7 чеков, по которым не было строк. Только заголовки. Покупатель набрал товаров - и отменил свой заказ на кассе. Сумма есть. Признак оплаты равен 0.
Вы пишете первый запрос "по оплаченным чекам" и ставите условие "сумма оплаты > 0". И туда попадают эти отмененные 7 чеков.
Вы пишете второй запрос "по неоплаченным" и ставите ДРУГОЕ условие "признак оплаты = 0". И туда тоже попадают эти отмененные 7 чеков.

Вы пишете через inner join в таблицу заголовков использование строк чеков в ПЕРВОМ запросе - и там эти 7 чеков исчезают, а во втором запросе Вы inner join разумеется не используете, у отмененных чеков не бывает строк, поэтому там эти 7 чеков есть. И при union их становится 3390, а не 3397.

Понятно? Следующий!
...
Рейтинг: 0 / 0
UNION увеличивает количество выводимых строк.
    #39757329
Kirill_l.s.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP, Да, понятно.
Благодарю за развёрнутый ответ! )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / UNION увеличивает количество выводимых строк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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