Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
C# 显示类别是否有线程_C#_Sql_Select_Join - Fatal编程技术网

C# 显示类别是否有线程

C# 显示类别是否有线程,c#,sql,select,join,C#,Sql,Select,Join,我正在尝试进行一个SQL查询,它显示类别以及类别中有多少线程的计数 这就是我得到的: SELECT categories.category_name, categories.category_id, COUNT(*) AS 'threadCount' FROM threads RIGHT OUTER JOIN categories ON categories.category_id = threads.thread_category_id GROUP BY categori

我正在尝试进行一个SQL查询,它显示类别以及类别中有多少线程的计数

这就是我得到的:

SELECT categories.category_name, categories.category_id, COUNT(*) 
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id
它可以工作,但是,threadCount中的结果总是大于或等于1,即使其中没有线程


如上图所示,每个类别似乎都有一个附加的线程。但问题是,只有“类别1”有线程,所有其他类别都有0个附加线程,因此它们应该显示0而不是1。

因为您做得很好,所以当您没有相应的线程时,外部连接null也被计为1。按如下方式运行查询,以了解我的意思

SELECT categories.category_name, categories.category_id
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
或者您可以通过如下更改查询来排除计数为1的null

SELECT categories.category_name, categories.category_id, COUNT(threads.thread_category_id) 
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id

因为您做的是正确的,所以当您没有相应的线程时,外部连接null也被计为1。按如下方式运行查询,以了解我的意思

SELECT categories.category_name, categories.category_id
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
或者您可以通过如下更改查询来排除计数为1的null

SELECT categories.category_name, categories.category_id, COUNT(threads.thread_category_id) 
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id

联接上的
Outer
包含所有类别,甚至包括未与任何线程连接的类别,因此至少有1个

SELECT categories.category_name, categories.category_id, COUNT(*) 
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id
我会把它做成

SELECT categories.category_name, categories.category_id, 
    (SELECT COUNT(*) FROM threads WHERE 
      categories.category_id = threads.thread_category_id) AS 'threadCount' 
FROM categories 

在这里,我直接计算每个类别的线程,不进行连接。

连接上的
外部
包括所有类别,甚至包括未与任何线程连接的类别,因此至少有1个

SELECT categories.category_name, categories.category_id, COUNT(*) 
AS 'threadCount' FROM threads 
    RIGHT OUTER JOIN categories 
    ON categories.category_id = threads.thread_category_id
GROUP BY categories.category_name, categories.category_id
我会把它做成

SELECT categories.category_name, categories.category_id, 
    (SELECT COUNT(*) FROM threads WHERE 
      categories.category_id = threads.thread_category_id) AS 'threadCount' 
FROM categories 

在这里,我直接计算每个类别的线程,但不进行连接。

这是因为要显示的是
右外部连接
,以及未连接到线程的类别。如果移除外部线程,则只会看到与线程连接的类别,如果希望保留空类别。。。需要使其有所不同。这是因为要显示的是
右外部联接
,以及未连接到线程的类别。如果移除外部线程,则只会看到与线程连接的类别,如果希望保留空类别。。。这是一个很好的观点,而且似乎是一个很好的方法。它确实起作用了,谢谢!这是一个很好的观点,而且似乎是一个很好的方法。它确实起作用了,谢谢!