Bonjour,
Dans le cadre d'un site multilangues je souhaiterai que mes requêtes me retournes les champs de la langue par défaut lorsque la langue recherché n'est pas renseigné, je m'explique :
Voici la structure sommaire de mes tables
table contenu
id
publication
table contenu_langue
contenu_id
code_langue
texte
Actuellement pour être sur que du texte sera affiché même si il n'est pas renseigné pour la langue en cour je fais ceci :
SELECT * FROM contenu WHERE publication = 1
et pour chaque ligne
SELECT * FROM contenu_langue WHERE contenu_id = (id ligne) AND code_langue = "(langue en cour)"
Si aucun résultat
SELECT * FROM contenu_langue WHERE contenu_id = (id ligne) AND code_langue = "(langue par défaut)"
Sachant que la langue par défaut est toujours renseigné.
Ma question est donc : est-il possible d'obtenir ce résultat en une seule requête ? Du type :
SELECT * FROM contenu, contenu_langue
WHERE
contenu.publication = 1 AND
contenu.id = contenu_langue.contenu_id AND
contenu_langue = "(langue en cour ou si aucun résultat langue par défaut)"
Toujours dans un soucis d'optimisation des temps de traitement et pour ne pas multiplier les accès à la base.
J'ai déjà cherché du coté des requêtes imbriquées ou autres HAVING mais sans résultats.
Merci pour vos lumières
Thomas
PS: pour infos je suis en PHP / MySql
Partager