Pb de jointure (traductions de libellés)
Bonjour,
j'ai 2 tables pour stocker des libellés dans plusieurs langues :
Code:
1 2 3 4 5 6 7 8 9
| table LIBELLE:
id primary key
name char(32)
table TRADUCTION:
id primary key
libelle_id foreign key references(libelle.id) on delete cascade
lang char(8)
result char(32) |
Par défaut tous les libelles sont crées dans la table LIBELLE.
Code:
1 2 3
| insert into LIBELLE values (NULL, 'a');
insert into LIBELLE values (NULL, 'beautifull');
insert into LIBELLE values (NULL, 'girl'); |
Le libelle par défaut existe toujours.
Mais ils peuvent avoir des traductions dans différentes langues dans la table TRADUCTION.
Code:
1 2 3
| insert into TRADUCTION values (NULL, 1, 'fra', 'une');
insert into TRADUCTION values (NULL, 2, 'fra', 'jolie');
insert into TRADUCTION values (NULL, 3, 'esp', 'chica'); |
Ma question :
comment récupérer les libéllés dans une langue choisie, et s'il n'y a pas de traduction renvoyer le libellé de base ?
les requêtes du style :
Code:
1 2 3
| SELECT * FROM LIBELLE L
LEFT JOIN TRADUCTION T ON L.ID=T.LIBELLE_ID
WHERE T.LANG='fra' OR T.LANG IS NULL; |
ne donnent pas les bons résultats.
Merci par avance.