2017-08-02 51 views
0

我有两个表TypeOfFruit和水果(即具有TypeOfFruit的FK),如下所示:如何查询显示同一个表中2个不同列的计数?

TypeOfFruit

ID  Name 
1  Apples 
2  Bananas 

水果

ID  TypeId  Expired 
1  1   FALSE 
2  1   TRUE 
3  1   TRUE 

基本上我想创建视图与以下:

FruitStats 

Name  total_num  total_expired 
Apples  3   2 
Bananas  0   0 

,第一个数字是每种水果的总数,第二个数字只是该类型的过期水果的数量。

我想出了以下获得TOTAL_NUM:

CREATE VIEW Fruit_Stats (name, total_num) 
AS SELECT t.name, COUNT(f.id) 
FROM TypeOfFruits t LEFT OUTER JOIN Fruits f ON f.type_id = t.id GROUP BY (t.id); 

但我有麻烦的计算除了到期。任何帮助,将不胜感激!

回答

0

你就近了。 A CASE声明将为您提供您所需:

SELECT t.name, COUNT(f.id), SUM(CASE WHEN expired = "TRUE" THEN 1 ELSE 0 END) as total_expired 
FROM TypeOfFruits t LEFT OUTER JOIN Fruits f ON f.type_id = t.id GROUP BY (t.id); 
相关问题