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