Oracle - Requête SQL outer join - SQL/NoSQL - Programmation
Marsh Posté le 30-06-2014 à 23:22:30
C'est facile...
Relit tes cours, ou cherches un peu , car il doit juste exister justes quelques millions de pages web sur les jointures, et des dizaines sur le forum
Si tu ne trouves pas ton bonheur...
Guillaume
Marsh Posté le 30-06-2014 à 23:44:24
je ne vois pas en quoi c'est "facile": car pour moi la solution n'est pas seulement dans la jointure. Le pb vient du fait qu'il y a 2 types d'adresse à mettre dans la même colonne de sortie. Hors pour "assembler" 2 jeux de données, il n'y a que le union à ma connaissance.
Une variation autour de qq chose ça devrait marcher...
Code :
|
Marsh Posté le 01-07-2014 à 16:52:47
dreameddeath a écrit : je ne vois pas en quoi c'est "facile": car pour moi la solution n'est pas seulement dans la jointure. Le pb vient du fait qu'il y a 2 types d'adresse à mettre dans la même colonne de sortie. Hors pour "assembler" 2 jeux de données, il n'y a que le union à ma connaissance.
|
Finalement je vais devoir me débrouiller autrement que par une requête SQL pour pas ne chambouler le fonctionnement actuel du curseur, intégrité du programme oblige ...
Du coup dans mon curseur je vais simplement créer une ligne supplémentaire à mon tableau en cas de rupture sur le code client.
En fait le problème c'est qu'à chaque ligne il me faut les infos de cli1 ET de cli2, + donc une ligne avec les infos de cli1 uniquement (donc tous les champs de cli2 à vide). Bref merci quand même
Marsh Posté le 01-07-2014 à 20:34:27
J'avais mal lu, le soucis de Kirvel, mais pareil la solution tout aussi "basique" et dans tout manuel de sql ...ou sur internet...
il faut faire un union join si tu veux avoir les 2 types d'adresses...
select a.id, a.adr from cli1 as a where a.cli = 'AAA'
union join
select b.id, b.adr from cli2 as b where b.cli = 'AAA'
(Faire gaffe à la longueur des champs et au typage..)
c'est l'idée: après tu mets la syntaxe que ton SGBD accepte.
Guillaume
Marsh Posté le 30-06-2014 à 16:03:59
Bonjour,
J'ai 2 tables cli1 (client et adresse principale) et cli2 (adresse secondaires d'un client) et chaque enregistrement de cli2 est lié à 1 enregistrement de cli1.
J'ai en gros une requête comme suit :
select * from cli1, outer cli2
where cli2.id = cli1.id
order by cli1.id, cli2.adr
Cette requête me retourne :
- soit 1 seule ligne avec les données du client principal s'il n'y a pas d'adresse secondaire,
- soit autant de lignes que d'adresses secondaires.
Or je voudrais que ma requête me retourne :
- ET la ligne d'adresse principale (infos de cli1 sans enregistrement de cli2 associé)
- ET les lignes d'adresse secondaires.
En résumé, si j'ai un client id=AAA sans adresse secondaire, ça me retourne :
id adr
AAA
Si mon client id=AAA a 3 adresses adr=01 adr=02 et adr=03, j'ai comme résultat :
id adr
AAA 01
AAA 02
AAA 03
et moi je voudrais
id adr
AAA
AAA 01
AAA 02
AAA 03
Comment faire svp ?
Message édité par Kirvel le 30-06-2014 à 16:07:41
---------------
MyAnimeList