Помогите с запросом

=Сергей=
Дата: 22.02.2013 15:14:06
есть таблица
create table [data]
(
[id] int not null,
[id_s] int not null
)


как получить список [id], для которых присутствуют ВСЕ значения из списка [id_s]?
То есть чтоб работало условие типа where [id_s] in (13, 15, 18, 45).
pkarklin
Дата: 22.02.2013 15:20:23
SELECT
  id
FROM
  [data]
WHERE
  where [id_s] in (13, 15, 18, 45)
GROUP BY
  id
HAVING 
  COUNT(DISTINCT id_s = 4)
=Сергей=
Дата: 22.02.2013 15:27:53
ТОЧНО! Спасибо!
RomanSamara10
Дата: 22.02.2013 16:43:06
Подскажите пожалуйста как правильно написать скрипт. Ситуация такая: есть перечень номеров (они все время разные) - выбираются селектом из базы по условиям. По каждому номеру отдельно нужно внести изменения в кучу других таблиц
ПРИМЕР: в эти таблицы вносим изменения
(update eo12 set m1 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo12 set m1 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo18 set s8 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo62 set g5 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo17 set h2 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo13 set m5 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo10 set w1 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo52 set x2 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529) и т.д.)

выбираю перечень номеров: select nomer from EO55 where d7 = 40, and r5 = 90
результат (52529, 56234, 25148, 10238, 80236, 29105, ........) -их бывает много

Хотелось бы узнать можно ли в один скрипт включить и select и update и полностью автоматизировать скрипт. Что бы при запуске он находил записи по условиям и обрабатывал каждую запись отдельно. Заранее благодарен всем за помощь
WarAnt
Дата: 22.02.2013 16:56:30
RomanSamara10,

можно

update ... from table join ...
RomanSamara10
Дата: 22.02.2013 17:10:16
хочу поставить скрипт на расписание. желательно чтоб это был цикл.(обработка каждого номера отдельно, т.к. иногда добавляю условия к update, да и в селекте иногда правлю) Если можно подробнее пример. Только начинаю осваивать sql. Заранее благодарен
Гость333
Дата: 22.02.2013 17:15:50
RomanSamara10
желательно чтоб это был цикл
Только начинаю осваивать sql.

В SQL циклы как раз нежелательны, т.к. SQL — это язык обработки множеств.

Можете расшифровать, что кроется здесь за многоточиями?
update eo17 set h2 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
update eo13 set m5 = ... where nomer = 52529 and d1 = (select d1 from eo53 where nomer = 52529)
Cygapb-007
Дата: 22.02.2013 17:41:23
Одним оператором update нельзя изменить данные в разных таблицах, поэтому все равно придется копипастить изменения для каждой таблицы.
Другое дело, что для каждой таблицы можно не указывать номера вручную, а объединить по JOIN с таблицей EO55, то есть что-то вроде этого:
update eo12 set m1 = ... 
   from EO55 
   join eo53 on eo53.nomer = EO55.nomer
   join eo12 on eo12.nomer = EO55.nomer and eo12.d1=eo53.d1
   where EO55.d7 = 40 and EO55.r5 = 90
RomanSamara10
Дата: 22.02.2013 18:36:48
Гость333
Можете расшифровать, что кроется здесь за многоточиями?

там некое значение, которое тоже выбирается из других таблиц . Т.е. вместо ... для первого update
(select h2 from eo200 where nomer = 52529)