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

есть запрос

select a.CountryName, c.ProductGroupName, Sum(d.Price) as SaleAmount 
from Countries a 
 join Sales b 
 on a.CountryId = b.CountryId 
 join Products c 
  on b.ProductId = c.ProductId 


нужно исключить строки у которых a.CountryId = 5 AND с.ProductId = 10 AND b.Manager = 'Tim'
т.е. продажи Tim по группе Авто(ProductId = 10) для страны США (CountryId = 5)

Как это сделать?
22 июн 15, 10:15    [17800903]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
забыл2,

это рабочий запрос?
Про GROUP BY что-нибудь знаете?

А в SELECTе много чего ещё есть. Например, WHERE и HAVING
22 июн 15, 10:19    [17800922]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
забыл2
Guest
iap,

нет, только пишу. group by забыл
22 июн 15, 10:21    [17800933]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
забыл2
Guest
iap
забыл2,

это рабочий запрос?
Про GROUP BY что-нибудь знаете?

А в SELECTе много чего ещё есть. Например, WHERE и HAVING


так вот и не могу понять как с Where исключить продажи именно Тома для США по Авто?
22 июн 15, 10:28    [17800954]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
Кролик-зануда
Guest
забыл2,

что-то у Вас Тим вдруг стал Томом :)

Вы же уже написали условие для строк, которые должны исключаться

автор
a.CountryId = 5 AND с.ProductId = 10 AND b.Manager = 'Tim'


осталось только для него добавить NOT (...) ;)
22 июн 15, 10:32    [17800967]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
забыл2
Guest
Кролик-зануда
забыл2,

что-то у Вас Тим вдруг стал Томом :)

Вы же уже написали условие для строк, которые должны исключаться

автор
a.CountryId = 5 AND с.ProductId = 10 AND b.Manager = 'Tim'


осталось только для него добавить NOT (...) ;)


так мне надо по всем странам данные и по всем продуктам. а так мне возвращается только по США и Авто
не хочу делать union или второй запрос, т.к. таблица продаж большая
22 июн 15, 10:38    [17800988]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
Кролик-зануда
Guest
забыл2,

а Вы точно сделали то, что я сказал?
Кролик-зануда
осталось только для него добавить NOT (...) ;)


покажите-ка, что же у Вас получилось при этом?
22 июн 15, 10:42    [17801007]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
забыл2
Guest
Кролик-зануда
забыл2,

а Вы точно сделали то, что я сказал?
Кролик-зануда
осталось только для него добавить NOT (...) ;)


покажите-ка, что же у Вас получилось при этом?



select a.CountryName, c.ProductGroupName, Sum(d.Price) as SaleAmount 
from Countries a 
 join Sales b 
 on a.CountryId = b.CountryId 
 join Products c 
  on b.ProductId = c.ProductId 
WHERE a.CountryId = 5 AND с.ProductId = 10 AND b.Manager NOT IN( 'Tim')
22 июн 15, 10:47    [17801027]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
Кролик-зануда
Guest
забыл2,
так у Вас в условии и написано - "отбирай только авто из США, все, кроме Тима"
Почему Вы решили, что NOT нужно применять только к последнему условию
ну и позанудствую. NOT и NOT IN всё-таки не одно и то же :)
22 июн 15, 10:53    [17801054]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
забыл2
Guest
Кролик-зануда
забыл2,
так у Вас в условии и написано - "отбирай только авто из США, все, кроме Тима"
Почему Вы решили, что NOT нужно применять только к последнему условию
ну и позанудствую. NOT и NOT IN всё-таки не одно и то же :)


А я и не знал, что NOT можно так применять. ДУмал только можно применительно к Like, Exists

Спасибо Кролик-Незануда ))
22 июн 15, 11:03    [17801090]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
забыл2
Кролик-зануда
забыл2,
так у Вас в условии и написано - "отбирай только авто из США, все, кроме Тима"
Почему Вы решили, что NOT нужно применять только к последнему условию
ну и позанудствую. NOT и NOT IN всё-таки не одно и то же :)


А я и не знал, что NOT можно так применять. ДУмал только можно применительно к Like, Exists

Спасибо Кролик-Незануда ))
Можно и без NOT:
WHERE a.CountryId <> 5 OR с.ProductId <> 10 OR b.Manager <> 'Tim'
так как
NOT (X AND Y) = (NOT X OR NOT Y)
известное по школьной программе тождество
22 июн 15, 11:25    [17801203]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31435
iap
забыл2
пропущено...


А я и не знал, что NOT можно так применять. ДУмал только можно применительно к Like, Exists

Спасибо Кролик-Незануда ))
Можно и без NOT:
WHERE a.CountryId <> 5 OR с.ProductId <> 10 OR b.Manager <> 'Tim'

так как
NOT (X AND Y) = (NOT X OR NOT Y)

известное по школьной программе тождество
Можно и без тождества.
WHERE a.CountryId = 5 AND с.ProductId = 10 AND b.Manager <> 'Tim'
22 июн 15, 15:16    [17802406]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
alexeyvg
iap
пропущено...
Можно и без NOT:
WHERE a.CountryId <> 5 OR с.ProductId <> 10 OR b.Manager <> 'Tim'


так как
NOT (X AND Y) = (NOT X OR NOT Y)


известное по школьной программе тождество
Можно и без тождества.
WHERE a.CountryId = 5 AND с.ProductId = 10 AND b.Manager <> 'Tim'
Смотря что нужно.
Если именно отрицание всего условия с AND, так не прокатит.
Может, надо выкинуть Тима только из страны 5 с продуктом 10?
С остальными сочетаниями оставить?
22 июн 15, 15:20    [17802419]     Ответить | Цитировать Сообщить модератору
 Re: исключить строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
iap
alexeyvg
пропущено...
Можно и без тождества.
WHERE a.CountryId = 5 AND с.ProductId = 10 AND b.Manager <> 'Tim'
Смотря что нужно.
Если именно отрицание всего условия с AND, так не прокатит.
Может, надо выкинуть Тима только из страны 5 с продуктом 10?
С остальными сочетаниями оставить?
То есть, я неправ, конечно.
Вдруг нужны страны, не равные 5 и продукты, не равные 10 для пользователя, которого не зовут Тим?
22 июн 15, 15:22    [17802426]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить