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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
wolk
Сообщения: 4
Зарегистрирован: 10 авг 2007, 07:52

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

Сообщение wolk » 11 янв 2008, 03:59

В базе есть таблица А с одним полем а1 и 100 записями, и есть таблица Б с полями б1, б2 и 1000 записями. Надо пройти по всему столбцу б1 и если значение поля б1 есть в столбце а1 вносить запись в таблице Б в этой же стоке, но в поле б2.

Подскажите не могу разобраться как делать.

Пользуюсь IBExpert, SQLDialect базы 1.

СанЕк
Сообщения: 25
Зарегистрирован: 25 окт 2005, 11:45

Сообщение СанЕк » 11 янв 2008, 08:51

Код: Выделить всё

Insert into Б (Б2) values(
select A1 from А where A1 in (select Б1 from Б)
)
что то вроде этого либо же процедуру хранимую.

DMA
Сообщения: 6
Зарегистрирован: 24 дек 2007, 17:03

Сообщение DMA » 11 янв 2008, 09:16

Так insert или update таблицы B?

wolk
Сообщения: 4
Зарегистрирован: 10 авг 2007, 07:52

Сообщение wolk » 11 янв 2008, 09:16

СанЕк писал(а):

Код: Выделить всё

Insert into Б (Б2) values(
select A1 from А where A1 in (select Б1 from Б)
)
что то вроде этого либо же процедуру хранимую.
спасибо но ето немного не то...

Щас поправлю

Мне не надо добавлять новую строку.
Надо пройти по всему столбцу б1 и если значение поля б1 есть в столбце а1, тогда вносить изменения в таблице Б в этой же строке, но в поле б2.

DMA
Сообщения: 6
Зарегистрирован: 24 дек 2007, 17:03

Сообщение DMA » 11 янв 2008, 09:27

Тогда можно так:

Код: Выделить всё

update B set b2 = b1 where b1 in (select a1 from A)

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 11 янв 2008, 11:34

Применение IN необосновано.

Код: Выделить всё

... where exists (select * from A where a1 = b1)

DMA
Сообщения: 6
Зарегистрирован: 24 дек 2007, 17:03

Сообщение DMA » 11 янв 2008, 12:17

Согласен.

Ответить