J'ai les tables suivantes:
T1 T2 T3 T4 ID ID ABC ID --- -------- --- --- 1 3 uvw 3 2 4 xyz 4
Je dois d'abord sélectionner les éléments de B qui ont les ID récupérés de C comme suit:
SELECT a,b,c FROM T2 WHERE ID IN (SELECT ID FROM T3) --will return u,v,w x,y,z
Maintenant, je veux récupérer les ID dans T1 et les merge avec chaque ligne returnnée à partir de la requête ci-dessus et les insert dans T4:
1 uvw 1 xyz 2 uvw 2 xyz
Utiliser l'option avec CROSS JOIN
INSERT T4(ID, A, B, C) SELECT t1.ID, oA, oB, oC FROM T1 t1 CROSS JOIN ( SELECT a,b,c FROM T2 t2 JOIN T3 t3 ON t2.ID = t3.ID ) o
Démo sur SQLFiddle
Si je vous ai bien compris, cela peut aider:
INSERT INTO T4 SELECT ID, A, B, C FROM (SELECT a,b,c FROM T2 WHERE ID IN (SELECT ID FROM T3)) tab1 CROSS JOIN T1