Bonjour à tous
Je suis sous Oracle et j'ai une table TA contenant, entre autres, une clé
étrangère (colonne b_id) vers une autre table TB. Lors de
l'affichage des éléments de TA, je veux afficher non pas la clé étrangère
(normal, ce n'est qu'un identifiant numérique) mais le libellé
correspondant dans TB (colonne libelle). Jusque là, rien de bien
compliqué. Le problème se situe lors de l'affichage des enregistrements ayant une clé étrangère valant null. D'où ma requête, que je trouve plutôt crade
Code :
- select distinct TA.a_id, decode(TB.b_id, null, '', TB.libelle)
- from TA,TB
- where TA.b_id is null or TA.b_id = TB.b_id
|
C'est un peu du bricolage car lorsque la clé étrangère vaut null, Oracle me fait un simple produit cartésien entre les 2 tables , d'où le decode pour afficher des chaînes vides au lieu de tous les libelle de la table TB, et le distinct pour finalement afficher l'enregistrement voulu.
Y'a certainement une méthode plus propre, non ?