Bonjour,
J'ai une table ENTITE avec un idEntite et un idTypeEntite.
L'idEntite est l'identifiant de l'entité et l'iTypeEntite est la catégorie de l'entite, c'est un INTEGER.
J'ai une table PARAMETRE avec un idEntite (Clé étrangère qui définit à quelle entité appartient ce parametre. Un idTypeParam qui définit la catégorie du parametre. et mon valeurParam qui définit la valeur que l'on souhaite donner à notre parametre.
Pour avoir une requete qui linéarise les paramètres d'une entité de facon horizontale, je fais une requete de ce type:
Tant que la ligne pour le PARAMETRE de type 2 existe, c'est bon, j'aurai tous mes résultats.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT * FROM ENTITE LEFT OUTER JOIN PARAMETRE A ON A.idEntite = ENTITE.idEntite LEFT OUTER JOIN PARAMETRE B ON B.idEntite = ENTITE.idEntite LEFT OUTER JOIN PARAMETRE C ON C.idEntite = ENTITE.idEntite WHERE (ENTITE.idTypeEntite = 1) AND ( A.idTypeParam = 1 AND B.idTypeParam =2 AND B.idTypeParam =3 )
Mon problème est que si le PARAMETRE de type 2 est facultatif, je n'aurai pas mes lignes dont le parametre de type 2 manque.
Je précise que je peux avoir un assez grand nombre de parametre, c'est variable. Globalement ca va entre 4 et 20.
Existe t-il un moyen, meme en passant par des procédures, que je ne maitrise pas trop, d'avoir une requete qui me met toutes les lignes de résultat ENTITE, peu importe que certains parametres ne soient pas renseignés, une valeur NULL me conviendrait allègrement.
Je suis sur MySQL.
Merci beaucoup.
PS: Je précise que pour un idTypeEntite, j'ai une table qui liste tous les champs qui peuvent être attribués à ce type d'entité, et si ils sont obligatoires ou facultatifs.
Pour l'instant je me contente de faire des vues, uniquement sur les parametres obligatoires, mais il faudrait que je puisse aussi avoir les colonnes pour les parametres manquants.
Partager