Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 21.11.2012, 10:56   #1
Пользователь
 
Пол:Мужской
Регистрация: 13.10.2008
Сообщений: 38
Репутация: 4
По умолчанию Сложный запрос adoquery

Помогите, плиз, составить запросик:
есть две таблицы dbf. В одно около 12000 записей, в другой 341.
Необходимо из первой таблицы исключить все записи второй таблицы по двум полям (все 341 записи есть в первой таблице). Делаю так:

select table1.* from table1 left join table2 on table1.поле1 <> table2.поле1 and table1.поле2 <> table2.поле2

Запрос выполняется минут двадцать, грузит проц на 100% и в результате выдет 3 млн строк!!!

Ниче не пойму.
dreich вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама:


Старый 22.11.2012, 09:22   #2
BookkeeperW
Пользователь
 
Пол:Мужской
Регистрация: 26.03.2008
Сообщений: 67
Репутация: 28
По умолчанию Re: Сложный запрос adoquery

SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.pole1 = table2.pole1 AND table1.pole2 = table2.pole2)
Если я правильно понял, то наверное так...
BookkeeperW вне форума
 
Ответить с цитированием Вверх
Старый 22.11.2012, 10:33   #3
dreich
Пользователь
 
Пол:Мужской
Регистрация: 13.10.2008
Сообщений: 38
Репутация: 4
По умолчанию Re: Сложный запрос adoquery

Цитата:
Сообщение от BookkeeperW Посмотреть сообщение
SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.pole1 = table2.pole1 AND table1.pole2 = table2.pole2)
Если я правильно понял, то наверное так...

Спасибо, работает.
А я придумал вот так - тоже работает:
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.pole1 = table2.pole1 and table1.pole2 = table2.pole2 WHERE table2.pole1 IS NULL and table2.pole2 is null
dreich вне форума
 
Ответить с цитированием Вверх
Старый 22.11.2012, 10:42   #4
BookkeeperW
Пользователь
 
Пол:Мужской
Регистрация: 26.03.2008
Сообщений: 67
Репутация: 28
По умолчанию Re: Сложный запрос adoquery

SQL-запросы сильная штука...
Удачи)))
BookkeeperW вне форума
 
Ответить с цитированием Вверх
Старый 03.11.2014, 20:59   #5
человек_45
Новичок
 
Пол:Мужской
Регистрация: 03.11.2014
Сообщений: 16
Репутация: 1
По умолчанию Re: Сложный запрос adoquery

1) Добавляем индексы на столбцы, если возможно.
2) В вашем запросе, излишен table2.pole1 IS NULL
3) используем not in , но EXISTS оптимален.
3) в оракле есть minus
4) mssql EXCEPT http://msdn.microsoft.com/ru-ru/library/ms188055.aspx
--
изучайте sql-ex.ru там есть все, что нужно.
человек_45 вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL сложный запрос Nik555 Базы данных 1 20.07.2011 08:28
ADOQuery + DBGridEh Litvinenko_A Delphi 8 01.12.2009 14:48
> Сложный запрос в MySQL TITANiusIK Веб - Программирование 1 11.08.2009 14:42
SQL Запрос McAccess2007 (Запрос с 3 таблиц - дублирование ) Dr Evil Базы данных 3 23.07.2009 09:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:06. Часовой пояс GMT +3.


Copyright ©2004 - 2025 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.04466 секунды с 13 запросами