Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка клиентов, у которых нет заказов  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 244
Делаю так :

select distinct m.Email
from dbo.aspnet_Membership as m, lt_Orders as o
where o.client_uid = m.UserId AND (0 =
      (
                select count(*)
                from lt_Orders
                where client_uid = m.UserId
      ))


Возвращает 0 записей, хотя точно есть клиенты без заказов. Где ошибка?

Сообщение было отредактировано: 31 окт 12, 14:12
31 окт 12, 14:11    [13402379]     Ответить | Цитировать Сообщить модератору
 Re: Выборка клиентов, у которых нет заказов  [new]
Glory
Member

Откуда:
Сообщений: 104760
gepard1980
Где ошибка?

В логике
Используйте NOT EXISTS() или LEFT OUTER JOIN
31 окт 12, 14:13    [13402392]     Ответить | Цитировать Сообщить модератору
 Re: Выборка клиентов, у которых нет заказов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Во-первых, not exists, а не эти приседания с count. А во-вторых, как вы проверяли, что "точно есть клиенты без заказов"?
31 окт 12, 14:13    [13402398]     Ответить | Цитировать Сообщить модератору
 Re: Выборка клиентов, у которых нет заказов  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
gepard1980,

select distinct m.Email
from dbo.aspnet_Membership as m
WHERE NOT EXISTS (SELECT 1 FROM lt_Orders as o WHERE where client_uid = m.UserId)
31 окт 12, 14:14    [13402405]     Ответить | Цитировать Сообщить модератору
 Re: Выборка клиентов, у которых нет заказов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
И да, зачем джоинить inner join'ом еще раз lt_Orders? O_o
31 окт 12, 14:14    [13402407]     Ответить | Цитировать Сообщить модератору
 Re: Выборка клиентов, у которых нет заказов  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
gepard1980,

ошибочка была
select distinct m.Email
from dbo.aspnet_Membership as m
WHERE NOT EXISTS (SELECT 1 FROM lt_Orders as o WHERE client_uid = m.UserId)
31 окт 12, 14:16    [13402426]     Ответить | Цитировать Сообщить модератору
 Re: Выборка клиентов, у которых нет заказов  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 244
Благодарю, братцы! Все работает. Отдельный респект trew за код. Пишу на ASP.NET и в SQL не силен, поэтому и вопросы дурацкие задаю :-)
31 окт 12, 14:32    [13402567]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить