Bonjour la zone,
j’ai un petit soucis pour faire une requête.
J’ai trouvé une solution qui fonctionne, mais c’est moche et je me dit qu’il doit y avoir plus propre et élégant.
- La problématique :
J’ai une table, contenant une configuration pour un type de bidule.
Cette table contient la configuration pour chaque type de bidule, ainsi qu’une configuration générique pour tous les bidules (dans ce cas l’id du type est NULL). Mais pas obligatoirement.
Je souhaiterai retourne SUR UNE LIGNE, les deux configs possible : la config spécifique pour ce type, et la config générique.
- la solution trouvée est la suivante :
SELECT config_type.*, config_defaut.* FROM
(SELECT * FROM maTable WHERE type=‹ XXX › AND id_data=‹ BIDULE01 ›) config_type
FULL OUTER JOIN (SELECT * FROM maTable WHERE type IS NULL AND id_data=‹ BIDULE01 ›) config_defaut
ON config_type.id_data=config_defaut.id_data;
Avec ça, j’ai bien mes deux lignes en une seule, que l’une et l’autre existe ou non (si je n’ai aucune ligne, j’ai un NOTFOUND, ça c’est normal).
Pour tous les autres essais que j’ai fait, le problème est que si le type n’est pas configuré, alors je n’ai aucun résultat (même pas la config par défaut qui existe).
Donc si vous avez une meilleure solution (je ne doute pas que ça existe), proposez !
Note : compatible Oracle ET Informix si possible (SQL std), les perfs ne sont pas prioritaires.
merci