Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一个表中查找的SQL查询_Sql_Sql Server_Linq_Linq To Sql - Fatal编程技术网

在同一个表中查找的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)将是我问题的

抱歉-我不擅长SQL。也许这是一个简单的问题——我不知道

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

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