在同一个表中查找的SQL查询
抱歉-我不擅长SQL。也许这是一个简单的问题——我不知道 我拥有的是一个基本的论坛表-例如在同一个表中查找的SQL查询,sql,sql-server,linq,linq-to-sql,Sql,Sql Server,Linq,Linq To Sql,抱歉-我不擅长SQL。也许这是一个简单的问题——我不知道 我拥有的是一个基本的论坛表-例如 id poster title type content postedon parentID 在此方案中,如果用户提出问题,则类型为0,如果是答案,则类型为1。如果条目是答案,我会将parentID更新为问题行上的id 我所要做的就是在SQL查询中提取问题,以及包含问题答案总数的数字-例如,结果行如下所示 jerry@dumb.com "how do I do this?" 4 其中(4)将是我问题的
id poster title type content postedon parentID
在此方案中,如果用户提出问题,则类型为0,如果是答案,则类型为1。如果条目是答案,我会将parentID更新为问题行上的id
我所要做的就是在SQL查询中提取问题,以及包含问题答案总数的数字-例如,结果行如下所示
jerry@dumb.com "how do I do this?" 4
其中(4)将是我问题的全部答案。我想在一个查询中实现这一点,而不必先提取问题,然后对每个问题Id运行重复查询以查找答案的数量
我该怎么做
谢谢大家,
(PS-有没有一种方法可以在Linq表达式中执行查询?如果可以的话,我会这样做而不是使用存储过程)您能试试这个,看看它是否满足您的需要吗
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
你想看到答案为零的问题吗?是的!乔的回答几乎做到了,我发帖问的正是这一点。我需要返回所有问题,这些问题可能有0个或更多答案。此外,与问题标题相比,您的答案标题是否会更改。例如:标题可能有一个Re:XYZ作为原始标题XYZ,或者这不是一个问题吗?@在正常情况下-标题不会改变乔-这似乎(几乎)做到了。但它只返回问题有1个或多个答案的行,而不返回没有答案的行(0个答案)…我要修改什么?尝试了之后,所有没有答案的问题都会得到“1”。。。(parentID列中所有问题都用0填充)是的,我也意识到了我的错误。您希望从第二个表左键联接和计数。请看编辑后的答案。是的,这正是我想要的。非常感谢你。很抱歉我不能“投票支持你”,你看,我还是Stackoverflow的学生!一年半后,我又回到这个问题上来,只是为了给你投票;)
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
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