|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Stessy DelcroixSenior Software Engineer JEE Inscription : avril 2002 Messages : 744 ![]() |
Bonjour à tous,
voilà mon problème est simple. Est-il possible d'insérer des données dans une table provenant d'autres table exemple Code :
INSERT INTO table1 (col1,col2,col3) SELECT t2 FROM table2 WHERE t3 = 10, SELECT t4 FROM table3 WHERE t5 = 20, SELECT t6 FROM table4 WHERE t7 = 40;
__________________
Langages : Java, SQL Outils : Eclipse, Intellij SGBD : Oracle, PostgreSQL Mes Articles |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Citation:
|
|
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
UNION ALL pour concaténer les résultats de tes SELECT
|
|
|
00
|
|
|
#4 |
![]() ![]() Stessy DelcroixSenior Software Engineer JEE Inscription : avril 2002 Messages : 744 ![]() |
Bonjour Orafance,
le union all ne marchera pas car je souhaite que le premier select me donne la valeur à rentrer dans la première colonne, le deuxième select me donne la valeur à rentrer dans la deuxième colonne, ... Code :
INSERT INTO personnes_match (match_id,personne_id,prix_locomotion_id) SELECT match_id FROM match WHERE match_id = 7 union ALL SELECT personne_id FROM personnes WHERE personne_id = 448 union ALL SELECT 1 FROM dual Merci
__________________
Langages : Java, SQL Outils : Eclipse, Intellij SGBD : Oracle, PostgreSQL Mes Articles |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Citation:
Code :
|
|||
|
00
|
|
|
#6 | |||||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Citation:
Code :
|
|||||
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
sauf erreur cette solution provoquera un produit cartésien donc bien plus de ligne qu'attendue non ?
|
|
|
00
|
|
|
#8 | ||||
|
Invité de passage
![]() Inscription : février 2008 Messages : 3 ![]() |
Bonsoir,
Union semble une bonne solution mais besoin un pivot peut être ? Si l' union des tables sources donnent : Code :
S1|nb|10 S1|nb|20 S1|nb|30 S2|nb|200 S2|nb|300 S3|nb|3000 Code :
10|NULL|NULL 20|NULL|NULL 30|NULL|NULL NULL|200|NULL NULL|300|NULL NULL|NULL|3000 En rajoutant un flag sur les lignes à regrouper, un group by et un sum pourrait les remettre sur la mettre ligne... le flag doit être unique et bien évidement commun au ligne que l' on souhaite regrouper, par exemple une date si le contexte le permet ou autre chose peu importe 20080206|10|NULL|NULL 20080201|20|NULL|NULL 20071201|30|NULL|NULL 20080206|NULL|200|NULL 20080101|NULL|300|NULL 20080101|NULL|NULL|3000 group by et sum : 20071201|30|NULL|NULL 20080101|NULL|300|3000 20080201|20|NULL|NULL 20080206|10|200|NULL Sur le résultat obtenu, INSERT INTO <CIBLE> SELECT ... GROUP BY C' est tordu mais bon ... si quelqu' un connait bien les pivots il trouvera surement plus simple que ces agrégats... Bonne soirée |
||||
|
|
00
|
|
|
#9 | ||
![]() ![]() Stessy DelcroixSenior Software Engineer JEE Inscription : avril 2002 Messages : 744 ![]() |
Et le vainqueur est ....
Roulement de tambour laurentschneider Complètement idiot que je n'avais même pas pensé mettre des parenthèses pour chaque requête. J'avais utilisé la même manière que toi mais sans les parenthèses Code :
![]() Problème résolu je pense
__________________
Langages : Java, SQL Outils : Eclipse, Intellij SGBD : Oracle, PostgreSQL Mes Articles |
||
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 319 ![]() |
Citation:
L'autre solution marché que si le nombre des enregistrements du chaque select est égal à 1. Et comme 1 multiplie par 1 fait 1 voila que le produit cartésien est correcte. Je saurais gré à Stessy qu'il nous explique pour quoi cette solution est bonne à parte le fait que son code est proche de celui de Laurent.
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com