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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 23:00   #1
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию Особый вид Select

Доброй поры суток, многоуважаемые форумчане.
Есть небольшой вопрос по SQL

Допустим, что у меня дано три таблицы, в каждой из которых есть айди пользователя. Мне необходимо выбрать из первой только те, которые есть во второй и не существуют в третей.
Вариантом решения задачи является такой запрос (приблизительно) :
Код:
Select id from Table1 where id in(select id from table2 where id not in(select id from table3));
НО я беспокоюсь про корректность и быстродействие такого запроса. Есть ли способ переписать его более адекватным образом ?
Radical_Edward вне форума Ответить с цитированием
Старый 19.04.2012, 23:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так вроде посимпатичней и понятней
Код:
Select Table1.id 
  from Table1,table2 
  WHERE Table1.ID=Table2.ID AND
        NOT EXISTS(SELECT * FROM table3 WHERE table3.ID=table1.ID)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.04.2012, 23:43   #3
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию

Нет, смысл именно в том, чтобы использовать subquery-там выборка идет не только по Id, а еще ряд условий
Radical_Edward вне форума Ответить с цитированием
Старый 20.04.2012, 00:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что мешает этот ряд условий воткнуть в запрос? И можно
Код:
WHERE id in (SELECT ...) AND NOT EXISTS(SELECT ...)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.04.2012, 01:38   #5
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию

Стоит попробовать. Спасибо
Radical_Edward вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В зависимости от выбора в Select изменить значения другого Select Tayfun HTML и CSS 3 18.08.2011 00:05
Особый поиск ExeiLj Microsoft Office Excel 5 17.04.2011 15:05
Select t1.N,t1.FIO,(select t2.acc from t2 where t2.type=1) from t1,t2 mavlon_m SQL, базы данных 2 17.09.2009 15:28
Особый эл-т в матрице, подправить! RomT24 Паскаль, Turbo Pascal, PascalABC.NET 10 22.05.2009 16:03
Передача значения в <select></select> kkkggg Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 06.09.2007 00:26