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

Откуда: Тирасполь
Сообщений: 451
Добрый день. Подскажите, чет совсем тупить начал. Есть две таблицы
Т1, значения : 1 2 3 5 7 8 9
Z1, значения : 1 2 3 4 5 6 7 8 9

необходимо найти все значения из таблицы Z1 которых нет в T1. Поля Numeric
Пишу
select * from z1 where ni not in (select ni from t1)

в результате 0 значений.
пишу
select * from z1 where ni in (select ni from t1) 

в результате значения те которые совпали. В чем у меня ошибка ?
4 дек 14, 11:40    [16948178]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Dima T
Member

Откуда:
Сообщений: 15288
У меня работает
create cursor t1 (ni n(5))
insert into t1 values (1)
insert into t1 values (2)
insert into t1 values (3)
create cursor z1 (ni n(5))
insert into z1 values (1)
insert into z1 values (3)
insert into z1 values (5)

select * from z1 where ni not in (select ni from t1)
4 дек 14, 11:55    [16948312]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Scorpio_md
Member

Откуда: Тирасполь
Сообщений: 451
в том и весь прикол, что Delphi такой запрос переваривает и Oracle тоже, а вот фокс у меня в этом плане не переваривает такой запрос. Извратнулся мчерез
delete from z1 where ni in (select ni from t1)

Но по мне как то некрасиво получилось.
4 дек 14, 12:03    [16948408]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Dima T
Member

Откуда:
Сообщений: 15288
Scorpio_md
в том и весь прикол, что Delphi такой запрос переваривает и Oracle тоже, а вот фокс у меня в этом плане не переваривает такой запрос.

Мой код пробовал запустить? Повторяю: он правильно работает, выдает 5

Какая у тебя версия фокса?
4 дек 14, 12:07    [16948446]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Scorpio_md
Member

Откуда: Тирасполь
Сообщений: 451
После такого заполнения курсора отработал как положенно
VFP 9.0 SP 2
Ver/ 09.00.0000.5815
4 дек 14, 12:17    [16948545]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Dima T
Member

Откуда:
Сообщений: 15288
Scorpio_md
После такого заполнения курсора отработал как положенно
VFP 9.0 SP 2
Ver/ 09.00.0000.5815

теперь ищи чем твои t1, z1 отличаются от моих. Единственное что могу предположить: включена табличная буферизация z1 и изменения не зафиксированы (TableUpdate()) или транзакции используются.
4 дек 14, 12:22    [16948603]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Scorpio_md
Member

Откуда: Тирасполь
Сообщений: 451
Проблема оказалась не в транзакциях, а том что в Т1 была одна запись со значением .NULL.
Как только я эту строку удалил, запрос стал работать как положено.
Странно как то.
4 дек 14, 14:22    [16949688]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Scorpio_md
Member

Откуда: Тирасполь
Сообщений: 451
Спасибо за помощь.
4 дек 14, 14:23    [16949693]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запрос на отсутствие данных в таблице  [new]
Dima T
Member

Откуда:
Сообщений: 15288
Scorpio_md
Проблема оказалась не в транзакциях, а том что в Т1 была одна запись со значением .NULL.
Как только я эту строку удалил, запрос стал работать как положено.
Странно как то.

Действительно странно, с NULL и у меня не срабатывает. Попробовал на MSSQL - тоже не срабатывает. Наверно так и должно быть.

Пиши так
select * from z1 where ni not in (select ni from t1 where ni is not NULL)
4 дек 14, 15:02    [16950069]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить