Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2014, 22:43   #1
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию T-SQL под запрос

Добрый день, подскажите почему эти запросы работают по разному? Хотя вроде бы результат должен быть одинаков.Проблема в дублирующихся наблюдениях?
Код:
Select av.[Номер Договора]
From [Таблица1].[Автомобіль] as av left join 
(select * from [Таблица2] where [Таблица2].[Статус Продажи]=1
) as so on av.[Номер Договора]=so.[Номер Договора]
--Выводит 100к записей

Код:
Select av.Номер Договора
From [Таблица1].[Автомобіль] as av left join [Таблица2] so on av.[Номер Договора]=so.[Номер Договора]
-- Выводит 80к записей

Последний раз редактировалось Stilet; 16.05.2014 в 09:53.
CWD вне форума Ответить с цитированием
Старый 15.05.2014, 22:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Наоборот - в 1-ом запросе не может быть больше записей, чем во 2-ом. Меньше может
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.05.2014, 22:57   #3
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию

Аватар, это тяжело объяснить, но в первом запросе больше наблюдений выводит чем во втором. С чем вообще это связано?
CWD вне форума Ответить с цитированием
Старый 15.05.2014, 23:07   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А так:
Код:
Select av.Номер Договора
From [Таблица1].[Автомобіль] as av left join [Таблица2] so on av.[Номер Договора]=so.[Номер Договора] AND so.[Статус Продажи]=1
Вообще-то мистика, если соответствует действительности
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.05.2014, 23:14   #5
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию

Аватар, сорри копировал с Word документа не влезла нижняя строка
Код:
Select av.Номер Договора
From [Таблица1].[Автомобіль] as av left join [Таблица2] so on av.[Номер Договора]=so.[Номер Договора]
where av.[Статус Продажи]=1
CWD вне форума Ответить с цитированием
Старый 15.05.2014, 23:31   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А-а, мистика отпадает. Хорошо подумай, почему может - тот where обрежет все, кроме результата со статусом равным 1. В первый запрос попадут и другие записи, LEFT JOIN однако
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.05.2014, 23:58   #7
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию

Аватар, мне казалось что в первом варианте в под запросе отсеются все записи у которых статус 1, а потом уже будут присоединены к левой таблице. И в таблице в результате останутся номера договоров у которых будет статус 1 и вообще без статуса. А во втором варианте просто реализован неявный вариант inner join?

Последний раз редактировалось CWD; 16.05.2014 в 01:00.
CWD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
адаптация SQL запрос под wordpress Grinder88 WordPress и другие CMS 0 02.09.2012 12:26
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL-запрос под Paradox Yurk@ БД в Delphi 1 08.12.2008 05:56
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15