MySql countの結果が0でも表示する方法

とあるテーブル内をデータ集計時に、マスタデータ側ではidに対して利用できるマークの様なものがあり、実際に利用しているマークを管理するテーブルで、まだ利用されていないマークはcount結果が0となり、その結果も取得できるクエリの作詞依頼があり、少し苦戦したのでクエリを記載。
目次
再現テーブル作成
mtb_use → idに対して利用できるマークを管理するテーブル
1 2 3 4 5 6 7 8 9 |
create table mtb_use (id smallint,mark varchar(2)); insert into mtb_use values(1,'○'); insert into mtb_use values(1,'×'); insert into mtb_use values(2,'◎'); insert into mtb_use values(2,'○'); insert into mtb_use values(2,'△'); insert into mtb_use values(2,'×'); |
tbl_result → idで実際に利用しているマークを管理するテーブル
1 2 3 4 5 6 7 8 9 10 |
create table tbl_result (id smallint,name varchar(8),mark varchar(2)); insert into tbl_result values(1,'tom','○'); insert into tbl_result values(1,'jim','○'); insert into tbl_result values(2,'tanaka','×'); insert into tbl_result values(2,'yamada','×'); insert into tbl_result values(2,'kitamura','×'); insert into tbl_result values(2,'yokokawa','◎'); insert into tbl_result values(2,'hirai','△'); |
mtb_use
1 2 3 4 5 6 7 8 9 10 11 |
mysql> select * from mtb_use; +------+------+ | id | mark | +------+------+ | 1 | ○ | | 1 | × | | 2 | ◎ | | 2 | ○ | | 2 | △ | | 2 | × | +------+------+ |
tbl_result
1 2 3 4 5 6 7 8 9 10 11 12 |
select * from tbl_result; +------+----------+------+ | id | name | mark | +------+----------+------+ | 1 | tom | ○ | | 1 | jim | ○ | | 2 | tanaka | × | | 2 | yamada | × | | 2 | kitamura | × | | 2 | yokokawa | ◎ | | 2 | hirai | △ | +------+----------+------+ |
この2つテーブルから、下記の結果を抽出する
1 2 3 4 5 6 7 8 |
+---------------------------------------+-------------------------------------+ | mtb_use id=2 で利用可能なmark | tbl_resule id=2 実際利用されているmark | +---------------------------------------+-------------------------------------+ | × | 3 | | ◎ | 1 | | △ | 1 | | ○ | 0 | +---------------------------------------+-------------------------------------+ |
使用したクエリは下記となります。
1 2 3 4 5 |
select m.mark ,count(t.mark) as count from mtb_use as m left join tbl_result as t on m.mark=t.mark and t.id = 2 where m.mark in (select mark from mtb_use WHERE id =2) and m.id =2 group by m.mark; |
-
前の記事
Windows Server2012R2 プリンター追加時に、「プリンターをインストールできませんでした。この名前の別のプリンターまたはプリンター共有が、既に存在します」が発生してインストールできない場合の対処法 2019.12.26
-
次の記事
windows10 electron-react-boilerplateを利用してelectron-react.jsを利用してみる 2019.12.27
コメントを書く