En mysql j'ai deux tables: Question
et Commentary
. C'est ce qu'ils ressemblent:Dans mysql, comment rejoindre avec la deuxième table et obtenir la rangée ayant la date la plus récente?
Question: Id, Titre
Commentaire: QuestionID, contenu, créé (champ date)
QuestionID est une clé étrangère ID Question.
J'ai donc un 0 à plusieurs relation entre Question et Commentaire. Autrement dit, une question peut avoir des commentaires 0..n.
Ce que je voudrais faire, c'est montrer toutes les questions avec le commentaire le plus récent (le champ Créé) le cas échéant. Ainsi, s'il n'y a pas de commentaire, la question doit toujours apparaître, mais avec null dans le champ Contenu du commentaire.
Je crois que je l'ai presque fonctionné dans cette requête, sauf qu'il récupère seulement les questions que ont commentaires. Comme mentionné, je voudrais les questions qui ont pas de commentaires ainsi.
select
q.Id AS Id,
q.Title AS Title,
c.Content AS Content
from question AS q
left join commentary as c on c.QuestionId = q.Id
where
c.Created = (
select MAX(created)
from commentary
where questionid = q.Id
)
Comment puis-je ajuster le script?
@Barmar: Je pense que vous êtes un peu trop rapide avec le "bouton de duplication". Je ne crois pas que ce soit un doublon de la question à laquelle vous êtes lié. Lorsque nous passons du temps à taper des questions sur stackoverflow, vous pouvez au moins lire attentivement les questions avant de les marquer en double! – brinch
Je pense que c'est un doublon. Il suffit de déplacer 'c.created = (...)' de la clause 'WHERE' à la clause' ON' et cela devrait fonctionner. – Barmar
Voir aussi [cette question] (https://stackoverflow.com/questions/7745609/sql-select-only-rows-with-max-value-on-a-column?rq=1). Il montre comment écrire une requête qui obtient le commentaire le plus récent pour chaque question, vous pouvez vous joindre à cette requête. – Barmar