|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 13 ![]() |
Bonjour je fais un système de gestion multi langue
Exemple table category contient un id il y a une table language qui contient id, code(pour fr, en, es etc) et une autre table intersection language_category qui contient id_language, id_category, name je fais mon affichage avec cette requête Code :
Je ne sais pas si vous avez déjà fait quelques chose de ce genre Merci |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 656 ![]() |
Bonjour,
comment avez-vous modélisé cette histoire de priorité ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 13 ![]() |
Merci, je ne suis pas un expert en base de données j'apprends sur le tas je ne sais pas si j'ai fais ça comme il faut.
dans la table category il y a un id exemple id_category id_category(KEY) 1 2 dans la table language il y a id_language, code id_language(KEY) code 1 fr 2 en et dans la table language_category il y a id_language, id_category, name exemple id_language(KEY) id_category(KEY) name 1 1 Poulet 2 1 Chicken 2 2 Fish si mon utilisateur est un français va voir dans la table category, voit qui il y a id 1 et 2, mais 2 voit qui y a pas de libellé en Français parce que le lui envoi fr, mais un en Anglais alors il affiche Poulet Fish C'est sure quand 2e je veux aller voir le libelle en anglais je ne sais pas si il faut faire une boucle ou autre je pourrai m’en sortir avec PHP mais je crois que le faire dans en SQL irai plus vite. Merci |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 656 ![]() |
Comment gérez-vous les libellés ? vous les chargés en mémoire au démarrage de l'appli ? où vous faites des requêtes sur votre table au fure et à mesure ?
|
|
|
00
|
|
|
#5 | ||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 446 ![]() |
Je suppose qu'il existe une table qui identifie pour chaque utilisateur les langues qu'il utilise avec leur niveau de priorité.
Cette table aurait la structure suivante : user_language_priority (id_user, id_language, priority) Code :
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 656 ![]() |
bonjour,
PgSql supportant les fonctions de fenêtrage une solution qui fera des scannages en moins : Code :
Alors maintenant, si vous executez la requête à chaque fois que vous avez besoin d'un libellé il faudrai plutôt orienter la requête sur un simple ORDER BY suivit d'un FETCH FIRST 1 ROWS ... |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 13 ![]() |
Merci, j'avais pas pensé cette table, je vais tester ça, je vous en redonne des nouvelles.
|
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 13 ![]() |
J'ai réussi affaire quelques chose avec ça
Code :
Merci |
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 656 ![]() |
Bonjour,
Par défaut indexez systématiquement vos foreign key, sauf si celle-ci ne sont jamais utilisée pour faire des jointures. Les primary key sont déjà indéxée. Il peut être utile parfois d'indexer la clause where suivit de la clause de jointure sur une même table, si vous avez des problèmes spécifique de perf. A lire : http://sqlpro.developpez.com/cours/quoi-indexer/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com