Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1225 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Oracle - Requête SQL outer join

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Oracle - Requête SQL outer join

n°2232206
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 30-06-2014 à 16:03:59  profilanswer
 

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
mood
Publicité
Posté le 30-06-2014 à 16:03:59  profilanswer
 

n°2232261
gpl73
Posté le 30-06-2014 à 23:22:30  profilanswer
 

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


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2232262
dreameddea​th
Posté le 30-06-2014 à 23:44:24  profilanswer
 

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 :
  1. select * from (select cli1.id, cli1.adr, 0 as rank from cli1 union select cli2.id, cli2.adr, 1 as rank from cli2) all_addresses order by id, rank

Message cité 1 fois
Message édité par dreameddeath le 30-06-2014 à 23:45:07
n°2232323
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 01-07-2014 à 16:52:47  profilanswer
 

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.
 
Une variation autour de qq chose ça devrait marcher...

Code :
  1. select * from (select cli1.id, cli1.adr, 0 as rank from cli1 union select cli2.id, cli2.adr, 1 as rank from cli2) all_addresses order by id, rank



 
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 ;)


Message édité par Kirvel le 01-07-2014 à 16:53:23

---------------
MyAnimeList
n°2232359
gpl73
Posté le 01-07-2014 à 20:34:27  profilanswer
 

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


---------------
mieux vaut être un con au chaud, qu'un con gelé lol

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Oracle - Requête SQL outer join

 

Sujets relatifs
Cours ou tuto PL/SQLMySQL : 1h pour une requête avec un NOT IN, conseils pour optimiser ?
[SGBD/SQL] MàJ Utilisation CASE et Auto Joinautomatiser la synchronisation de 2 base de donnée mysql et oracle
le nombre des In/Out à l'exécution d'une requeteErreur install SQL 2008 R2
[VB6] Problème de lien d'une base SQL Server vers AccessSQL et les Update multi lignes
Connexion permanent Excel Access - Requête multiple 
Plus de sujets relatifs à : Oracle - Requête SQL outer join


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR