Union/jointure

Fermé
Utilisateur anonyme - Modifié par nnj99 le 12/10/2010 à 10:10
 Utilisateur anonyme - 12 oct. 2010 à 12:23
Bonjour,
Je reviens à vous pour un problème technique. Je vous le simplifie à l'extrême parce que comme tous les problèmes, il est compliqué :)
Je suis sqlplus sous oracle.

J'ai quatre tables :
Gros1, Gros2, petit1 et petit2

il me faut tous enregistrements de Gros1 qui sont liés à petit1 OU à petit2 par les champs a, b et c
ET
tous enregistrements de Gros2 qui sont liés à petit1 OU à petit2 par les champs a, b et ... x et y

Ma première idée est de faire une union de Gros1 et Gros2, puis des jointure sur petit1 et petit2. Mais je ne sais pas si c'est une bonne idée. De toute façon, je merde déjà sur l'union :(
select a,b,c from Gros1 UNION select a,b,x,y from Gros2; 

ne fonctionne pas (je suppose qu'union ne doit travailler qu'avec un même nombre de champs).

Que me suggérez vous ?

Merci d'avance,
Nnj

1 réponse

jee pee Messages postés 40696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 20 janvier 2025 9 497
Modifié par jee pee le 12/10/2010 à 11:28
Salut,

Pour avoir le même nombre de champ pour l'union j'essaierai de mettre une constante dans le premier select comme :

select a,b,c,NULL from Gros1 UNION select a,b,x,y from Gros2; 
select a,b,c,9 from Gros1 UNION select a,b,x,y from Gros2;   
select a,b,c,' ' from Gros1 UNION select a,b,x,y from Gros2;    

à tester si NULL est autorisé ou alors suivant le type de Y (numérique,alpha)

cdlt


Un étranger, c'est un ami qu'on n'a pas encore rencontré.
0
Utilisateur anonyme
12 oct. 2010 à 12:23
Pas bête ... prévoir une colonne vide pour les champs sensés ne pas y etre ...
Ce serait plutôt
select a,b,c,NULL, NULL from Gros1 UNION select a,b,NULL,x,y from Gros2;


mais l'idée était qu'on puisse avoir, pour chaque ligne (ou presque) les champs c, x et y remplis.
Là, c'est soit c, soit x et y.
Faut plutot un
select a,b,c,x,y from Gros1, Gros2 where Gros1.a=Gros2.a and Gros1.b=Gros2.b ;

... d'ailleurs je me demande .... pourquoi c'est pas ce que j'ai fait depuis le debut O_o ?
0