在同一个表中查找的SQL查询

时间:2010-09-24 18:25:47

标签: sql sql-server linq linq-to-sql

道歉 - 我不擅长SQL。也许这是一个简单的查询 - 我不知道。

我所拥有的是一个基本的论坛表 - 例如

id poster title type content postedon parentID

在此方案中,如果用户提出问题,则为type = 0,如果是答案,则键入= 1.如果条目是答案,则将parentID更新为问题行上的id。

我想要做的就是在SQL查询中提取问题,以及一个包含问题答案总数的数字 - 例如结果行看起来像

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

其中(4)将是我的问题的总答案。我想在一个查询中执行此操作 - 无需先提出问题,然后对每个问题ID运行重复查询以查找答案的计数。

我该怎么做?

谢谢大家,

(PS - 有没有办法在Linq表达式中进行查询?如果可以的话,我会这样做而不是存储过程)

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

你可以尝试一下,看看它是否符合你的需求吗?

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

答案 2 :(得分:0)

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