Использование Sql Server 2008 у нас есть запрос, соединяющую две таблицы Customer и Customer_Info столбцы похожиSQL Server внешнее соединение с несколькими или условиями
Заказчик
visit_date
customer_seq_num
Customer_Info
customer_seq_num
customer_detail_number
customer_value
в по этому запросу выглядит так:
Customer
left outer join Customer_Info
on Customer_Info.customer_seq_num = Customer.customer_seq_num
and Customer_Info.customer_detail_number = 31
and (
(right(Customer_Info.customer_value,4)='8788' and month(visit_date)=2) or
(right(Customer_Info.customer_value,4)='8808' and month(visit_date)=12)or
(right(Customer_Info.customer_value,4)='8891' and month(visit_date)=9)
)
проблема заключается в том, что если я запустил запрос, я получаю 400 записей. Если я удалить первое условие из «и части», что означает я закомментировать
--(right(Customer_Info.customer_value,4)='8788' and month(visit_date)=2) or
я получить больше результатов .... не следует то, как или-х и и расположены потому что возвращаться более или такое же количество записей для каждой из этих записей? почему бы удалить или вызвать больше записей для возврата? Похоже, что SQL Server делает soemthing нечетное с вложенной логикой
спасибо за любую помощь
Вы имеете в виду «меньше или столько же записей»? – user2989408
Я согласен с вашим ожиданием. Вы уверены, что '400' - это общее количество строк? Многие программы показывают только первые X строк запроса, которые возвратят больше. – SebastianH
Я так не думаю. Он постоянно показывает те же два числа, когда я запускаю с этим условием или без него. я бы не увидел такой же номер, если я использую (студия управления сервером sql server), если бы он просто отрубал в какой-то момент – user1023993