Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
=Сергей= Member Откуда: Сообщений: 334 |
есть таблицаcreate table [data] ( [id] int not null, [id_s] int not null ) как получить список [id], для которых присутствуют ВСЕ значения из списка [id_s]? То есть чтоб работало условие типа where [id_s] in (13, 15, 18, 45). |
22 фев 13, 15:14 [13967443] Ответить | Цитировать Сообщить модератору |
pkarklin Member Откуда: Москва (Муром) Сообщений: 74927 |
SELECT id FROM [data] WHERE where [id_s] in (13, 15, 18, 45) GROUP BY id HAVING COUNT(DISTINCT id_s = 4) |
22 фев 13, 15:20 [13967488] Ответить | Цитировать Сообщить модератору |
=Сергей= Member Откуда: Сообщений: 334 |
ТОЧНО! Спасибо! |
22 фев 13, 15:27 [13967555] Ответить | Цитировать Сообщить модератору |
RomanSamara10 Member Откуда: Сообщений: 6 |
Подскажите пожалуйста как правильно написать скрипт. Ситуация такая: есть перечень номеров (они все время разные) - выбираются селектом из базы по условиям. По каждому номеру отдельно нужно внести изменения в кучу других таблиц ПРИМЕР: в эти таблицы вносим изменения (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 и полностью автоматизировать скрипт. Что бы при запуске он находил записи по условиям и обрабатывал каждую запись отдельно. Заранее благодарен всем за помощь |
22 фев 13, 16:43 [13968029] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
RomanSamara10, можно update ... from table join ... |
22 фев 13, 16:56 [13968107] Ответить | Цитировать Сообщить модератору |
RomanSamara10 Member Откуда: Сообщений: 6 |
хочу поставить скрипт на расписание. желательно чтоб это был цикл.(обработка каждого номера отдельно, т.к. иногда добавляю условия к update, да и в селекте иногда правлю) Если можно подробнее пример. Только начинаю осваивать sql. Заранее благодарен |
22 фев 13, 17:10 [13968168] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
В 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) |
||
22 фев 13, 17:15 [13968184] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
Одним оператором 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 |
22 фев 13, 17:41 [13968320] Ответить | Цитировать Сообщить модератору |
RomanSamara10 Member Откуда: Сообщений: 6 |
там некое значение, которое тоже выбирается из других таблиц . Т.е. вместо ... для первого update (select h2 from eo200 where nomer = 52529) |
||
22 фев 13, 18:36 [13968612] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |