2010-11-08 4 views
1

я должен запускать несколько запросов, которые зависят друг от другаSQL вопрос сервера хранимая процедура петли

select a from a (result has multiple rows) 
select b from b (result has multiple rows) 

в каждой строке этого запроса мне нужно, чтобы запустить этот

select c from c where c.a=a amd c.b=b 

insert c into d 

вроде как:

select a from a (result has multiple rows) 
select b from b (result has multiple rows 
    for a in a 
     for b in b 
      select c from c where c.a=a amd c.b=b 
      insert c,a,b into d 

Это можно сделать как хранимую процедуру?

спасибо

+0

таблицы а имеет несколько строк в результатах, и таким образом, б – Birby

+0

конечный результат должен выглядеть следующим образом таблицы D: С, а, б – Birby

ответ

4

Сохраненная процедура? Конечно. Блин, это возможно даже в одном заявлении:

INSERT INTO d (c) 
    SELECT c FROM c WHERE c.a IN (SELECT a FROM a) AND c.b IN (SELECT b FROM b) 

Вы, вероятно, может даже сделать немного лучше с объединением, но писать, что мне нужно знать больше о том, как таблицы связаны.

3

Я уверен, что вы можете написать этот запрос без использования каких-либо петель в SQL.

1
INSERT 
INTO d 
SELECT c.* 
FROM a 
CROSS JOIN 
     b 
JOIN с 
ON  c.a = a.id 
     AND c.b = b.id 
Смежные вопросы