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

Откуда: Владивосток
Сообщений: 132
select z.id as zid
from Zayavka as z
where zid not in (SELECT zayavka_id from ROU_table)

в таблице ROU_table нет таких идентификаторов. однако рекордсет пуст!
3 июл 14, 19:03    [16256769]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
А у вас наверно и просто поле zid есть в таблице Zayavka ?

select z.id as zid
from Zayavka as z
where not exists(SELECT * from ROU_table r where r.zayavka_id = z.id)
3 июл 14, 19:07    [16256779]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
ughunter, зато в таблице ROU_table есть значения zayavka_id = NULL, верно?
3 июл 14, 19:08    [16256785]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Glory,
да такое поле есть
3 июл 14, 19:11    [16256803]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Shakill,

Вы абсолютно правы!
3 июл 14, 19:11    [16256807]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Glory,

where z.id not in (SELECT zayavka_id from ROU_table)
тоже безрезультатно
3 июл 14, 19:12    [16256810]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
ughunter
Glory,
да такое поле есть

Ну так not in будет сравнивать это поле, а не z.id
3 июл 14, 19:12    [16256812]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Glory,

см. выше
3 июл 14, 19:14    [16256818]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
ughunter
Glory,

см. выше

И вы см.выше
3 июл 14, 19:14    [16256819]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
ughunter,

запрос более сложный. я привел часть - на которой косяк

если полностью то так:

select z.id as zid
,s.id as sid
,s.data_doc
,s.nomer_doc
,z.gn_nomer
,k1.naimen as otpr
,k2.naimen as poluch
,a.naimen as ara
from Zayavka as z
inner join Kontragenti as k1 on k1.kod=z.otpr
inner join Kontragenti as k2 on k2.kod=z.poluch
inner join Aeroporti as a on a.kod=z.poluch_ara
inner join Schet as s on z.id = s.z_id and z.otpr in ('000001069','1069','900506')
inner join Schet_table as st on st.s_id = s.id and st.nom_id in (select id from Nomenklatura_SOPGS where nomenklatura_kod in ('00000003635','00000003640'))
where
z.data_doc between '01.06.2014 0:00:00' and '30.06.2014 23:59:59'
AND
z.id not in (SELECT zayavka_id from ROU_table)
AND s.id not in (SELECT schet_id from ROU_table)
group by z.id,s.id,s.data_doc,s.nomer_doc,z.gn_nomer,k1.naimen,k2.naimen,a.naimen
UNION select NULL as zid,s.id as sid,s.data_doc,s.nomer_doc,NULL,k1.naimen as otpr,NULL as poluch,NULL as ara
from Schet as S inner join Kontragenti as k1 on k1.kod = s.kontragent_kod and s.kontragent_kod in ('000001069','1069','900506')
inner join Schet_table as st on st.s_id = s.id and st.nom_id in (select id from Nomenklatura_SOPGS where nomenklatura_kod in ('00000003635','00000003640'))
where
s.data_doc between '01.06.2014 0:00:00' and '30.06.2014 23:59:59' AND
s.id not in (SELECT schet_id from ROU_table)
AND s.z_id IS NULL group by s.id,s.data_doc,s.nomer_doc,k1.naimen
3 июл 14, 19:15    [16256823]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
ughunter
запрос более сложный. я привел часть - на которой косяк

А вы ответы читаете ?
3 июл 14, 19:17    [16256828]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Glory,

Ну поймите. Я всяко переименовывал. Результат один....
3 июл 14, 19:19    [16256844]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
ughunter
Glory,

Ну поймите. Я всяко переименовывал. Результат один....

Я вам привел _текст запроса_
3 июл 14, 19:20    [16256849]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Glory,

Суматоха! Простите! Сыплю голову пеплом! А почему так???? Ведь уже работает 5 лет и только на этом месяце....
3 июл 14, 19:24    [16256866]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
ughunter
А почему так???? Ведь уже работает 5 лет и только на этом месяце....

Предлагаю открыть статьи хелпа про IN EXISTS и узнать
3 июл 14, 19:31    [16256901]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
ughunter
Member

Откуда: Владивосток
Сообщений: 132
Glory,

Обязательно!!!!! Спасибо Вам ОГРОМНОЕ!!!
3 июл 14, 19:38    [16256923]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
Mairos
Member

Откуда:
Сообщений: 555
ughunter, можно ещё использовать "left join" вместо "not in" тогда вы обойдёте проблему с "null" значением в таблице из подзапроса.
4 июл 14, 10:11    [16258448]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
Mairos
можно ещё использовать "left join" вместо "not in"
Нельзя. Потому что запросы могут вернуть разные результаты.
4 июл 14, 10:21    [16258495]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Mairos
ughunter, можно ещё использовать "left join" вместо "not in" тогда вы обойдёте проблему с "null" значением в таблице из подзапроса.
Что за ерунда?
Надо ВСЕГДА применять NOT EXISTS вместо NOT IN, и будет счастье - его не может не быть!
Можно дать ещё более общую рекомендацию: НИКОГДА не использовать IN (SELECT),
ВСЕГДА использовать EXISTS(SELECT *)
4 июл 14, 10:23    [16258509]     Ответить | Цитировать Сообщить модератору
 Re: Не могу понять как такое происходит... ПОМОГИТЕ!!  [new]
juwdoks
Member

Откуда:
Сообщений: 144
iap, спасибо )
4 июл 14, 10:29    [16258540]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить