Если вы найдете этот вопрос простым для форума - обвините его в себе, и я извинюсь, потому что я не более чем просто новичок в этом вопросе.MS Access sql query для таблиц форумов
У меня есть эти две таблиц в MS Access:
элементы таблицы и табличные Комментарии соединенных Comments.parent ID = Items.ID.
Мне нужен запрос, который будет отображаться последние 10 записей из таблицы элементов, каждый из записей, содержащих
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
До сих пор я получил что-то вроде этого:
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
Ну. Он работает, но я все время спрашиваю себя, можно ли это сделать более простым способом.
Любые предложения будут более чем приветствуются.
Заранее спасибо.
Flinsch и Remou, спасибо большое за ваши реакции. Мне пришлось сделать некоторые небольшие корректировки, но общие идеи, которые вы отправляете, были для меня очень полезными. Оба примера дали мне толчок в правильном направлении, чтобы улучшить мои знания sql, и у меня есть запрос, работающий плавно. – novice17