Bonjour!
Je vais essayé d'expliquer mon problème le plus clairement possible:
Il concerne 3 tables:
- certificats
- reference
- produit_certificat
(d'autres tables interviennent également dans la requete mais pas dans le join).
En gros je veux afficher tous les produits qui se trouve dans la table "produit_certificat" (qui est une relation entre une table de produit et la table de certificat), chaque row accompagné de la reference (de la table reference) concernant ce produit pour l'agence du certificat (qui lui est associé dans produit_certificat).
Certificats:
- certif_id
- agence_id
- ...
Produit_certif:
- prod_id
- certif_id
- ...
Reference:
- prod_id
- agence_id
- reference
Un produit sera donc affiché en relation avec un certificat lui meme associé a une agence, et la relation entre le produit et cette agence nous renvoit (ou non) un reference code. Le fait est qu'il n'existe pas forcement de reference code pour un produit-agence donné. Mais dans ce cas je veux juste que la requete me renvoit 'null' pour la reference mais me renvoit correctement les autres informations (qu'il n'oublie pas ce row).
Ce que je pensais devoir faire était un outer join sur agence_id ( de reference) et sur prod_id de reference aussi. Mais d'apres ce que je vois on ne peut pas faire 2 join sur une meme table... De plus je travaille avec oracle 9.x et les syntaxe sont de la forme (+) pour les jointures.
SELECT * from certificats c, reference r, produits_certificat p
WHERE
p.certif_id = c.certif_id AND
r.agency_id = c.agency_id AND -> n'existe pas forcement
r.prod_id = p.prod_id -> n'existe pas non plus forcement
Avant je n'avais pas besoin de l'agence dont je faisais simplement r.prod_id (+) = p.prod_id et ça fonctionnait nikel. Mais maintenant que l'agence entre également en compte je ne sais pas comment faire..
J'èspere que vous allez pouvoir m'aider.
Merci d'avance!
Partager