|
|
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Здравствуйте У меня такая задача. Нужно вывести записи из таблицы matlist , id которых нет в таблице demands (matlist - справочник) SELECT DISTINCT matlist.id_mat, matlist.nomenclature, matlist.style_mat FROM matlist JOIN demands ON matlist.id_mat IN (demands.id_mat) --- Так правильно показывает, какие материалы встречаются в demands Стоит добавить NOT - показывает абсолютно все материалы из справочника (а не инвертируется). NOT добавлял как и после ON, так и перед IN ... Делал еще так. SELECT id_mat INTO ARRAY lalala FROM demands SELECT DISTINCT matlist.id_mat, matlist.nomenclature, matlist.style_mat FROM matlist JOIN demands ON matlist.id_mat IN (lalala) --- Здесь как и с НОТ, так и без него рассматривается только первая запись в массиве Что я делаю не так? Спасибо за ответ p.s. foxpro 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 15:42 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 15:59 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
если не ошибаюсь select matlist.id from matlist where id ! in (select id from demands) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 16:02 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
спасибо! :) (уже сам не знаю зачем я жоин туда вплел...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 16:29 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Код: plaintext 1. 2. SELECT much faster with IS NULL Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 15:35 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
2 ank_guest Нет. Не будет. Тестировал на VFP6SP5 года 2 назад именно подобные запросы. Было 3 варианта: NOT IN LEFT JOIN ... HAVING IsNull()=.T. NOT EXISTS(...) Так вот, NOT IN из них самый быстрый. LEFT JOIN и NOT EXISTS() примерно одинаковые по времени, но раза в 2 медленнее, чем NOT IN Покопайся в архиве на http://forum.foxclub.ru/list.php?f=5 Было обсуждение результатов этого тестирования. Сейчас не помню ссылку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 15:56 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Вот. Нашел тему с обсуждением сравнения скорости подобных запросов http://forum.foxclub.ru/read.php?f=5&i=60927&t=60819&cp=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 16:04 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
ank_guest Отличное решение, за исключением одного НО - LEFT JOIN тут не нужен, поскольку условие в WHERE делает обьединение INNER JOIN. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 16:07 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
дико извеняюсь за вмешательство но у меня и в первом и во втором запросе по три записи чего не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 16:16 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Опс. Тест в 5-ке возвращает для 1-ого - 0 записей для 2-ого - 3 записи Тест в 7-ке возвращает для 1-ого - 3 записей для 2-ого - 3 записи Тест в 9-ке возвращает для 1-ого - 1 записей для 2-ого - 3 записи Как видим прогрес в SQL движке налицо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 16:29 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
И ещё убрал индексы 5-ка не отреагировала 7-ка стала правильно работать 9-ка не повлияло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 16:33 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Hi PaulWist! На самом деле это был глюк в SQL движке - и его поправили - то-ли полностью в 7-ке, то-ли частично в 7-ке и окончательно в 8-ке :) Проявлялся он как раз с IS NULL, ISNULL() и NVL() Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 01:15 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Привет, Игорь Igor Korolyov и его поправили - то-ли полностью в 7-ке, то-ли частично в 7-ке и окончательно в 8-ке Ну ты хоть до конца все мои посты прочел, а если прочел , то наверное смог сделать вывод, что поправили в 9-ке точно, а в 7-ке всё было по старому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 09:57 |
|
||
|
Предикат NOT IN
|
|||
|---|---|---|---|
|
#18+
Hi PaulWist! 1) Прочёл, но не все буквы угадал :) 2) В 7-ке ЯВНО это правили - без индекса оно работает корректно, как ты сам и заметил. Но не до конце сделали... С индексом выходит ерунда :( 3) А вот в 8-ке видимо окончательно вылечили - там и с индексом и без него работает как положено. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 16:58 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33050953&tid=1594283]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 484ms |

| 0 / 0 |
