2010-11-08 11 views
1

je dois exécuter plusieurs requêtes qui dépendent les uns des autresSQL boucles procédure stockée question du serveur

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

la pour chaque ligne de cette requête que je dois exécuter ce

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

insert c into d 

un peu comme:

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 

Est-ce possible de faire comme une procédure stockée?

merci

+0

a plusieurs lignes dans le résultat et ainsi que b – Birby

+0

le résultat final devrait ressembler à ce tableau d : c, a, b – Birby

Répondre

4

Procédure stockée? Sûr. Tirer, il est même possible dans une déclaration:

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

Vous pouvez probablement faire encore un peu mieux avec une jointure, mais pour écrire que je dois en savoir plus sur la façon dont les tableaux se rapportent.

3

Je suis sûr que vous pouvez écrire cette requête sans utiliser de boucles dans SQL.

1
INSERT 
INTO d 
SELECT c.* 
FROM a 
CROSS JOIN 
     b 
JOIN с 
ON  c.a = a.id 
     AND c.b = b.id 
une table