J'essaie de comprendre comment interroger ma base de données de sorte qu'il va essentiellement d'abord ordonner mes résultats, puis les GROUPER ... Cette question semble être un peu commun et j'ai trouvé des exemples mais je ne sais toujours pas comment faire cela et utiliser les exemples dans ma propre situation ... Donc toute l'aide est définitivement appréciée.Obtenir un groupe MySQL par requête pour afficher la ligne dans ce groupe avec la valeur la plus élevée
Voici mes tables MySQL:
livres
book_id
BOOK_TITLE
utilisateurs
user_id
user_name
book_reviews
review_id
book_id
user_id
review_date (date d'horodatage unix)
Je voudrais interroger 30 des dernières critiques de livres. Ils afficheront simplement:
Nom du livre
Nom d'utilisateur d'avis
Cependant, je voudrais afficher chaque pas plus d'une fois. Ainsi, l'avis affiché dans la liste devrait être le dernier commentaire ajouté. Pour ce faire, je suis simplement en train de regrouper par book_name et de commander par review_date DESC. Mais l'interrogation de cette manière n'affiche pas l'enregistrement avec la date de révision la plus récemment ajoutée comme étant groupée par ligne, donc mes données sont incorrectes.
Voici ma requête en cours:
SELECT books.books_title, users.user_name, book_reviews.review_id FROM books, users, book_reviews WHERE book_reviews.book_id = books.book_id AND book_reviews.user_id = users.user_id GROUP BY book_title ORDER BY review_date DESC LIMIT 30
D'après ce que je l'ai lu il semble que je dois avoir un sous-requête où je reçois la valeur MAX (de review_date) mais je ne comprends toujours pas comment relier tout cela.
Merci beaucoup.
Merci pour la réponse OMG Ponies! Je suis encore assez inexpérimenté avec MySQL et n'ai jamais essayé avec des variables définies par l'utilisateur ou des conditions CASE avant donc je devrais pouvoir apprendre de ceci ... Cela dit j'ai eu une erreur en essayant de lancer ceci: # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel correspondant à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '@book: = b.book_title FROM BOOKS b JOIN BOOK_REVIEWS b' à la ligne 10 – flight643
@ flight643: Désolé - il manquait une virgule après "AS rank ". Les expressions CASE sont presque identiques aux instructions SWITCH, si vous les connaissez. –