SQL rejoindre la gauche s'MAX(date)
j'ai ces tables :
- avis
- id INT
- cdate DATETIME
- ...
- thème
- id
- nom
- notice_theme
- id_notice
- id_theme
Je veux obtenir la dernière des notifications pour chaque thème.
SELECT id_theme, n.id
FROM notice_theme
LEFT JOIN (
SELECT id, cdate
FROM notice
ORDER BY cdate DESC
) AS n ON notice_theme.id_notice = n.id
GROUP BY id_theme
Le résultat n'est pas bon. Une idée ? Merci.
Où est votre MAX(date)?
Il n'y a aucune garantie que l'ORDRE de la table jointe sera préservée. Mettre de l'ORDRE dans la sélection externe.
Vous devez ajouter Max(n.cdate)
Il n'y a aucune garantie que l'ORDRE de la table jointe sera préservée. Mettre de l'ORDRE dans la sélection externe.
Vous devez ajouter Max(n.cdate)
OriginalL'auteur user2252137 | 2013-04-06
Vous devez vous connecter pour publier un commentaire.
Il existe de nombreuses méthodes pour résoudre ce problème, mais j'ai l'habitude de faire de cette façon. Une sous-requête supplémentaire est nécessaire pour calculer séparément la dernière
cDate
pour chaqueID
.pouvez-vous donner des exemples d'enregistrements avec votre deired résultat?
2shared.com/document/nJNTNfCz/example.html
voir ma réponse mis à jour
:)
Parfait, c'est très gentil, merci beaucoup! 😉
OriginalL'auteur John Woo