Топ 5 комментариев от конкретного поста.Как написать мой SQL - PullRequest
0 голосов
/ 02 февраля 2011

Я хочу показать только первые 5 комментариев для определенного поста (например, пост на Facebook, где люди не могут их комментировать).

gbn был достаточно любезен, чтобы помочь разобраться с этой проблемой, выполнив следующее:

select
   *
FROM
   tblPost P
   OUTER APPLY
   (SELECT TOP 5 * FROM tblComment C  
      WHERE P.id = C.postid
      ORDER BY something) inline

Но так как я не являюсь гроссмейстером, мне понадобится ваша помощь, чтобы включить это в мое настоящее заявление.

SELECT *
FROM
memberactions INNER JOIN
actions ON memberactions.actionid = actions.id INNER JOIN
members ON memberactions.memberid = members.id LEFT OUTER JOIN
members members_2 INNER JOIN
actioncomments ON members_2.id = actioncomments.memberid INNER JOIN
comments ON actioncomments.commentid = comments.id ON actions.id = actioncomments.actionid

Так что мой вопрос: не могли бы вы переставить мой sql, чтобы поместить OUTER APPLY в мое реальное выражение sql.

Предполагая, что мои комментарии к таблице представляют собой tblComment, а actioncomments представляют таблицу tblPost

enter image description here

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Кажется, что вообще нет необходимости в таблице member_2, но это точное представление о том, что у вас было (сохранение member_2)

SELECT *
FROM memberactions
INNER JOIN actions
    ON memberactions.actionid = actions.id
INNER JOIN members
    ON memberactions.memberid = members.id
OUTER APPLY (
    select top(5) *
    FROM actioncomments
    inner join comments ON actioncomments.commentid = comments.id
    inner join members members_2 ON members_2.id = actioncomments.memberid
    WHERE actions.id = actioncomments.actionid
    order by comments.id desc) comments
1 голос
/ 02 февраля 2011
SELECT *
FROM
memberactions 
INNER JOIN actions 
ON memberactions.actionid = actions.id 
INNER JOIN members 
ON memberactions.memberid = members.id 
LEFT OUTER JOIN members members_2 
    INNER JOIN actioncomments 
    ON members_2.id = actioncomments.memberid 
    OUTER APPLY  

    (SELECT TOP 5 * FROM comments C  
          WHERE actioncomments.commentid = comments.id 
      ORDER BY something)


ON actions.id = actioncomments.actioni

до сих пор не знаю, что вы хотите заказать по

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...