Requête à résultats conditionnels
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:D
Thomas
PS: pour infos je suis en PHP / MySql