Insérer une condition dans une jointure

Eléphanteau du PHP | 23 Messages

22 août 2005, 01:22

Bonjour,

Je construis actuellement un site multilingue. Pour mes news je dispose des tables suivantes :
- news qui contient : id, date, auteur, etc...
- news_content qui contient : newsId, contenu, langue

Pour le moment, il m'affiche le contenu des news FR si elles existent.

Moi je souhaiterais que si la news #32 existe en FR on affiche FR, si elle n'existe pas on affiche le contenu EN.

Voici ma requete actuelle :

Code : Tout sélectionner

SELECT c.content FROM news t INNER JOIN news_content c ON t.id = c.newsId WHERE c.langId = '3' ORDER BY t.creationDate DESC
Comment feriez-vous cela ?

Quelque chose du genre c.langId = '3' (OR c.langId = '1' IF DOES NOT EXIST), existe-il une commande amenant ce résultat ?

Merci de votre aide.

Alexis d'Oultremont

ViPHP
ViPHP | 1380 Messages

22 août 2005, 08:32

Bonjour,

Essaye en mettant un OR sur la langue:

Code : Tout sélectionner

SELECT * FROM news t INNER JOIN news_content c ON t.id = c.Id WHERE c.id=32 AND (c.langue = '3' OR c.langue='1')
Dans PHP tu testes le nombre de lignes retournées, si plus d'une --> prendre la bonne dans le tableau php avec un array_search().

Je ne vois pas trop comment faire ça directement en SQL.
ripat