2016-12-22 2 views
0

から選択し、私は同様のテーブル構造を持っている:それを以下に示しているように3つのテーブルのSQLite

表1 - カテゴリC

cat_id | name 
1  Music 
2  Books 

表2 - 不明U

unk_id | eng_id_fk | progress 
1   1   0 
2   2   0 
3   3   1 
4   4   0 
5   5   1 
6   6   0 
7   7   1 

表3 - ENGをe

e_id | e_name | category_id_fk 
1  example1  1 
2  example2  1 
3  example3  1 
4  example4  2 
5  example5  2 
6  example6  1 
7  example7  1 

出力を持つselect文:

c.cat_id | c.name | count(u.unk_id) where u.eng_id_fk = e.e_id | count(u.unk_id where progress>0) 
1.   Music  5            2  
2.   Books  2            1 

私はそれを行うことを試みたが、私はこのようなものがあります。だから私はほとんどすべてを持っている

SELECT c.cat_id,c.name,count(u.unk_id) AS counts FROM category c, eng e, unknown u WHERE e.e_id= u.ENG_ID_FK AND e.category_id_fk=c.cat_id group by c.name order by c.cat_id; 

を。私はちょうど猫が行の数をどのように取得するのか分からないunk_id進捗> 0。

答えて

0

解決策が見つかりました。私は、進捗> 0のunknown_idのカウントを得るためにcount()に条件を指定する方法を知っておく必要がありました。

select c.cat_id, c.name, count(u.unk_id) AS COUNTS, 
count(case when u.progress>0 then 1 else null end) AS PROGRESS 
FROM category c, eng e, unknown u 
WHERE e.e_id=u.eng_id_fk AND e.category_id_fk = c.cat_id 
group by c.name order by c.cat_id; 
関連する問題