Si vous trouverez cette question simple pour le forum - blâmez-le sur moi et je vais m'excuser, parce que je ne suis pas plus qu'un novice à cette questions.MS Access requête sql pour les tables de forum
J'ai ces deux tableaux dans MS Access:
tables et articles de table Commentaires reliés par Comments.parent ID = Items.ID.
je besoin d'une requête qui affiche 10 derniers enregistrements de la table des éléments, chaque enregistrement contenant
Item.id Item.title Item.text Item,date_modified count of Comments [if any] for the Item last Comments[if any] guestName last Comments[if any] date_modified
Jusqu'à présent, j'ai quelque chose comme ceci:
SELECT TOP 10 t4.id, t4.* FROM ( SELECT Items.id AS item_id , Items.*, t3.guestName , t3.modified AS comment_date ,(SELECT count(*) FROM Comments where parentid = Items.id) as comentscount FROM Items ,(SELECT t2.id as commentID, t2.guestName , t2.modified, t2.parentid FROM Comments as t2 ORDER BY t2.modified DESC ) as t3 WHERE (Items.id = t2.parentid AND t3.commentID = (SELECT max(id) FROM Comments where parentid = Items.id)) ORDER BY Items.modified DESC UNION SELECT Items.id AS item_id, Items.* , null AS guestName, null AS comment_date, (SELECT count(*) FROM Comments where parentid = Items.id) as comentscount FROM Items WHERE (SELECT count(*) FROM Comments where parentid = Items.id) = 0 ) AS t4
bien. Cela fonctionne mais je ne cesse de me demander si cela pourrait être fait de manière plus simple.
Toutes les suggestions seront plus que bienvenues.
Merci d'avance.
Flinsch et remou, merci beaucoup pour vos réactions. J'ai dû faire quelques ajustements mineurs mais les idées générales que vous m'avez envoyées m'ont été très utiles. Les deux exemples m'ont donné la poussée dans la bonne direction pour améliorer mes connaissances sql et j'ai fait fonctionner la requête en douceur. – novice17