根据外键状态计算多少

时间:2018-03-19 20:42:01

标签: mysql sql

我有三个表 - 信息,文章和作者

INFO

\----+-----------+------------+  
| ID |  AuthorID |  ArticleID |  
+----+-----------+------------+  
| 1  |  1        |    1       |  
| 2  |  2        |    2       |    
| 3  |  3        |    NULL    |  
| 4  |  1        |    3       |  

文章

\----+------------+   
| ID |  Status    |   
+----+------------+   
| 1  |  Confirmed |  
| 2  |  Pending   |    
| 3  |  Reviewing |     

作者

\----+----------+
| ID |  Status  |
+----+----------+
| 1  |  John    |  
| 2  |  Mark    |  
| 3  |  Peter   |   

我想算一下有多少"确认"有多少"未确认"每个作者都有的文章。 "未确认"文章包括没有状态的所有内容"已确认"或者在INFO TABLE中为NULL。

对于这个小例子,答案应该是:

\--------+-----------+---------------+
| AUTHOR | CONFIRMED | NON-CONFIRMED |
+--------+-----------+---------------+
| John   | 1         | 1             |
| Mark   | 0         | 1             |
| Peter  | 0         | 1             |

1 个答案:

答案 0 :(得分:2)

你走了。我在重新创建数据集时使用了临时表。替换为您的表名。

select  c.status , sum(case when  b.status ='confirmed' then 1 else 0 end)Confirmed, sum(case when  b.status ='confirmed' then 0 else 1 end)NonConfirmed
from  #info a left join #article b on a.articleid=b.id 
left join #authors c on a.authorid=c.id 
group by  c.status 
相关问题