Je n'arrive pas à comprendre comment gérer quelque chose que j'ai pensé dans SQL. J'ai des signets et des commentaires que les utilisateurs ont publiés à leur sujet. J'utilise une seule table pour tous les commentaires. Nous avons donc une relation un-à-plusieurs entre les marque-pages et les commentaires.Afficher uniquement le meilleur résultat parmi un choix multiple
Il existe une autre table, agissant comme intermédiaire, reliant chaque marque-page à tous ses commentaires.
Il existe deux types de commentaires. Titres suggérés pour le marque-page et commentaires généraux. Les titres suggérés ont à la fois un titre et une description, tandis que les commentaires généraux ont seulement une description. Il existe également un système de notation pour les titres suggérés, afin que la page d'accueil puisse choisir le titre le mieux noté pour chaque signet à afficher.
Donc, les choses principales à clarifier. Il y a la table Bookmarks avec BID et URL, ainsi que la table Comments avec CID, Title, Comment et Rating. Le BooksNComms est la table de connexion entre eux. Ce qui précède fonctionne pour obtenir le meilleur titre et la description (commentaire) pour un certain BID. Ce que je veux faire est de faire ce qui précède pour, disons, les 10 nouveaux signets.
SELECT bookmarks.url, comments.title, comments.`comment`, comments.rating
FROM bookmarks
INNER JOIN booksncomms
ON bookmarks.bid=booksncomms.bid
INNER JOIN comments
ON comments.cid=booksncomms.cid
JOIN (
SELECT bookmarks.bid
FROM bookmarks
ORDER BY bookmarks.datecreated DESC
LIMIT 1
)
AS a
ON a.bid=bookmarks.bid
WHERE comments.title IS NOT NULL
ORDER BY bookmarks.url;
Ce qui précède me donne tous les titres pour les 10 signets les plus récents.
Est-il possible de sélectionner uniquement le titre le mieux noté pour chacun des 10 signets les plus récents?
Unreadable SQL. C'est une convention que les mots-clés SQL doivent être en majuscules pour les distinguer. :( – Shef
Edité mon deuxième exemple selon vos instructions Désolé pour cela –
Mis à jour ma réponse, essayez-le et faites le moi savoir si cela fonctionne ou pas – Shef