Bonjour,
Je cherche une astuce pour minimiser une requête que je dois faire car très limité en nombre de caractères qu'importe le langage, l'essentiel étant dans l'approche.
L'idée est de remplacer des "sous-select" par des jointures et des conditions permettant d'être fin dans le code.
Je dois interroger un formulaire d'une base de données de mon logiciel métier dans lequel il y a des boutons-radios.
Je suis arrivé à "minimiser" les choses dans la clause FROM et à trouver les réponses à la question 1, mais je ne sais ensuite pas comment dire dans les autres clauses je veux lire les réponses à la question 2 etc.
Notez que la requête citée ici est en HQL
Je sais bien que mon problème se situe autour de la jointure externe "Bas_catalogue_util_data as data1", mais je ne sais pas comment formuler la chose.
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
17 SELECT data1.caud_libelle as question1, data2.caud_libelle as question2 FROM Frm_instance_formulaire as fifo join fifo.frm_formulaire as form join fifo.frm_instance_rubriques as irub join irub.frm_valeurs as valeur1 join irub.frm_formulaire_rubrique as rub1 with rub1.foru_code = 'QUESTION1' join irub.frm_formulaire_rubrique as rub2 with rub2.foru_code = 'QUESTION2', Bas_catalogue_util_data as data1 WHERE form.form_code = 'code_formulaire' and valeur1.fval_id_objet = data1.id
Je m'en sors facilement avec 2 sous-select contenant les instances de rubriques et cette jointure externe mais je suis persuadé qu'il y a mieux et plus puissant.
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
17
18
19
20
21 SELECT (select data1.caud_libelle from fifo.frm_instance_rubriques as instrub1 join instrub1.frm_formulaire_rubrique as frub1 join instrub1.frm_valeurs as valrub1, Bas_catalogue_util_data as data1 where valrub1.fval_id_objet = data1.id and frub1.foru_code = 'QUESTION1') (select data2.caud_libelle from fifo.frm_instance_rubriques as instrub2 join instrub2.frm_formulaire_rubrique as frub2 join instrub2.frm_valeurs as valrub2, Bas_catalogue_util_data as data2 where valrub2.fval_id_objet = data2.id and frub1.foru_code = 'QUESTION1') FROM Frm_instance_formulaire as fifo join fifo.frm_formulaire as frm WHERE and frm.form_code = 'code_formulaire'
Si vous pouviez m'aider à avoir la logique manquante...
Je vous remercie.
Partager