2013-05-01 2 views
0

У меня есть 2 таблицы. Мне нужно, чтобы забрать некоторые идентификаторы из таблицы один и на основе одного условия и вставить в таблицу 2. Второй столбец снова должна исходить от TABLEA, но на основе различных условий2 разных условия для одного SQL-запроса

Таблица A

NC 1 
NC 2 
SC 3 
SC 4 

Таблица B

1 100 
    1 200 
    2 100 
    2 200 

Я хочу, чтобы вставить строки в таблицу B, так что это будет выглядеть, как это ....

1 100 
1 200 
2 100 
2 200 
3 100 
3 200 
4 100 
4 200 

Я собираю 3 и 4 из таблицы A на основе состояния cond = = SC, и теперь я хочу знать, как выбрать значения 100 и 200, которые NC имеет ...

Извините, если я не указал его правильно

+7

Ваша логика не ясна. Как вы связываете '100' с' 3' и '200' с' 4'? Что произойдет, если есть больше или меньше двух строк? –

+0

Извините ... у меня вопрос неправильный. – user1410867

+0

Я исправил свой вопрос – user1410867

ответ

2
-- sample data 
create table tbla (code char(2), id int); 
insert into tbla values ('NC', 1); 
insert into tbla values ('NC', 2); 
insert into tbla values ('SC', 3); 
insert into tbla values ('SC', 4); 

create table tblb (id int, value int); 
insert into tblb values (1, 100); 
insert into tblb values (1, 200); 
insert into tblb values (2, 100); 
insert into tblb values (2, 200); 

-- your query to INSERT the new rows into tblb 
insert into tblb 
select x.id, y.value 
from 
(
    select distinct a.id 
    from tbla a 
    where a.code = 'SC' 
) x 
cross join 
(
    select distinct b.value 
    from tbla a 
    join tblb b on a.id = b.id 
    where a.code = 'NC' 
) y 
left join tblb b on b.id = x.id and b.value = y.value 
where b.id is null; 
0

Вы можете сделать это с помощью запроса как:

Select a.id, b.value 
from "Table A" a 
join "Table B" b 
on b.id=1 --This condition pick the two first rows on table B. 
where a.condtion = 'SC' 

Это не элегантное решение, но это работает.

Смежные вопросы