Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2015, 08:54   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
Вопрос SQL запрос не срабатывает. Нужна помощь по условию

Добрый день!
Есть таблица в БД (Firebrid). В ней есть таблица, например, TAB. Есть список ID, которые не нужно выбирать из БД. Надо получить все U, чьи ID не равны списку моих ID. Я написал так:
Код:
 for i := 0 to _sl.Count - 1 do
 begin
  Form1.pFIBQuery1.Close;
  Form1.pFIBQuery1.SQL.Clear;
  Form1.pFIBQuery1.SQL.Add('SELECT * FROM TAB WHERE ID <> :ID');
  Form1.pFIBQuery1.ParamByName('ID').Value:=_sl.Strings[i];
  Form1.pFIBQuery1.ExecQuery;
  Form1.AllUsersInSelectedDB.Items.Add(Form1.pFIBQuery1.FieldByName('U').AsString);
 end;
Но не работает. Может как-то по-другому можно? Прошу помочь мне.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.04.2015, 08:57   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
SELECT * FROM TAB WHERE ID NOT IN (1,33,567)
И чем больше список в скобочках, тем медленнее будет работать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.04.2015, 09:09   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
По умолчанию

Решил задачу самостоятельно. Просто получил список и занес его в переменную TStringList и затем через Pos смотрел на значения. Работает)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.04.2015, 09:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Чего-то это решение как то не вяжется с и исходным посылом. А для оптимизации предыдущего создать бы временную табличку, загнать туда игнор-перечень и во WHERE использовать NOT EXISTS в этой временной таблице. Это так, лирика. Вопрос решен, значит проблем нет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.04.2015, 09:43   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,194
Хорошо

Цитата:
Сообщение от Аватар Посмотреть сообщение
Чего-то это решение как то не вяжется с и исходным посылом. А для оптимизации предыдущего создать бы временную табличку, загнать туда игнор-перечень и во WHERE использовать NOT EXISTS в этой временной таблице. Это так, лирика. Вопрос решен, значит проблем нет
Та не, просто это долго расписывать логику, которая заложена в программе. Спасибо, Аватар! Приму на заметку твою рекомендацию и воспользуюсь ей, когда буду оптимизировать код
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос не срабатывает Janger Общие вопросы Delphi 6 24.01.2015 17:28
учебная задача: запрос SQL, который выводит из таблицы данные по условию Nixon91 Помощь студентам 1 13.05.2014 06:45
SQL нужна помощь 5cek БД в Delphi 7 03.02.2014 07:33
Нужна помощь с SQL MaskEdit БД в Delphi 8 13.01.2009 17:00