Bonsoir,
je souhaiterais proposer diverses langues à mes visiteurs. Pour se faire j'impose une langue de référence (anglais - en) et propose diverses autres dont la traduction est souhaitable (français - fr, par exemple).
Ainsi souhaiterais-je via une requête recueillir l'ensemble des catégories présentes dans la base de donnée pour une langue donnée (pour l'exemple, français). Toutefois, s'il venait à manquer une traduction, je souhaiterais que la requête aille piocher dans la langue de référence, l'anglais (qui se doit d'être complète).
Pourriez-vous m'aider à optimiser ce gouffre à performances ?
Voici le schéma des deux tables :
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
22
23
24
25
26
27 SELECT JB.JB__LC.I, JB.JB__LC.N FROM JB.JB__LC WHERE JB.JB__LC.C = 'fr' UNION SELECT JB.JB__LC.I, JB.JB__LC.N FROM JB.JB__LC WHERE JB.JB__LC.C = 'en' AND JB.JB__LC.I NOT IN (SELECT JB.JB__LC.I FROM JB.JB__LC WHERE JB.JB__LC.C = 'fr')
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 Oracle Express Edition - indexé et contraint comme il se doit. JB__SC (comme JB__Structure of categories, simple hièrarchie id/parent_id) : "I";"P" - Id, parent_id. "1";"0" "2";"1" "3";"1" "4";"3" JB__LC (comme JB__Localized Categories, ensemble des traductions) : "I";"N";"D";"C" - Id, nom, description, code langue. "1";"Produits";"null";"fr" "2";"Fleurs";"null";"fr" "3";"Graines";"null";"fr" "1";"Products";"null";"en" "2";"Flowers";"null";"en" "3";"Seeds";"null";"en" "4";"Herb seeds";"null";"en" <= veuillez noter que 4 n'a pas de traduction francophone.Question subsidiaire : habitué de Firebird, j'utilisais jusqu'alors la représentation intervallaire pour classer un arbre (bornes gauche/droite), toutefois Oracle semble proposer une fonction native pour parcourir ceux-ci (Start with / connect by), est-ce plus performant ? Ou peut-être existe-t-il une méthode encore plus performante via Oracle ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Résultat espéré : "1";"Produits" "2";"Fleurs" "3";"Graines" "4";"Herb seeds"
N'hésitez pas à me conseiller des tutoriels/livres/.sql sur ces deux "problèmes" (plurilinguisme et hièrarchie) sous Oracle, Google me boude.
Merci beaucoup pour votre aide.
Partager