SQL-запрос, который выглядит в той же таблице - PullRequest
2 голосов
/ 24 сентября 2010

Извинения - я не очень хорош в SQL.Возможно, это простой запрос - я не знаю.

У меня есть базовая таблица форума - например,

id poster title type content postedon parentID

в этой схеме, если пользователь задает вопрос, онТип = 0, и если это ответ, введите = 1. Если запись является ответом, я обновляю parentID до идентификатора в строке вопроса.

Все, что я хочу сделать, это тянуть вопросыв запросе SQL вместе с числом, содержащим общее количество ответов на вопрос - например, строка результата будет выглядеть как

jerry@dumb.com "how do I do this?" 4

Где (4) будет общим количеством ответов на мой вопрос.Я хочу сделать это в одном запросе - без необходимости сначала извлекать вопросы, а затем запускать повторные запросы для каждого идентификатора вопроса, чтобы найти количество ответов.

Как мне это сделать?

Спасибо всем,

(PS - есть ли способ сделать запрос в выражениях Linq? Я бы сделал это вместо хранимой процедуры, если бы мог)

Ответы [ 3 ]

4 голосов
/ 24 сентября 2010
select ft1.poster, ft1.title, count(ft2.id)
    from ForumTable ft1
        left join ForumTable ft2
            on ft1.id = ft2.parentID
                and ft2.type = 1
    where ft1.type = 0
    group by ft1.poster, ft1.title
0 голосов
/ 25 сентября 2010
SELECT A.poster, a.acontent, COUNT(B.parentId) AS Answers 
FROM forum B, forum A 
WHERE B.atype = 1 AND B.parentId = A.id 
GROUP BY a.id, a.poster, a.acontent
0 голосов
/ 24 сентября 2010

Можете ли вы попробовать это и посмотреть, соответствует ли оно вашим потребностям?

SELECT poster, title, ISNULL(X.NoOfAnswers,0)
FROM forum LEFT OUTER JOIN
(SELECT parentId, COUNT(id) as NoOfAnswers
FROM forum
GROUP BY parentId) X
ON forum.id = X.parentId
WHERE forum.type = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...