Voici mon énoncé SQL:
SELECT *
FROM articles article
JOIN article_translations translation
ON article.id = translation.article_id
AND translation.lang = :lang
AND translation.date = (SELECT MAX(date)
FROM article_translations at_temp
WHERE at_temp.lang = :lang
AND article.id = translation.article_id)
3 Réponses :
Ceci est dû au fait qu'une seule ligne dans Si vous souhaitez sélectionner toutes les lignes de articles code> correspond à la condition dans la clause code> sur code> de la code> joindre code> sur article_translations code >. P>
articles code>, vous pouvez utiliser rejoindre code>, qui maintient toutes les lignes sur le côté gauche de la requête (tableau avant le Joindre de gauche Code> Clause - Dans votre cas Articles CODE>). Ces lignes, qui ne correspondent à aucune ligne de lignes de article_translations code> auront null code> dans tous les article_translations code> colonnes. P>
Je pense que toute ma requête est mauvaise, ce que je veux, c'est de choisir la dernière traduction de chaque article comment puis-je faire cela? Votre solution fonctionne mais c'est étrange parce que chaque article a une traduction
où at_temp.lang =: Lang et article.Id = traduction.article_id code> est très suspect. Vraisemblablement que le dernier prédicat était censé référence at_temp code>
WP, c'était le problème (les forêts posteront la même réponse, alors je vais accepter sa réponse), merci
Je pense que la dernière condition: est incorrecte.
Essayez ceci: p>
Essayez ceci: je suppose que le problème est avec votre sous-requête corrélée =>
SELECT * code> renvoie toujours toutes les colonnes. Voulez-vous dire les lignes de retour?Oui désolé, c'était une erreur