0

私は2つのテーブルを持っています:

  1. Pet_tableID 番号とペットの種類 (「猫」など) を含む
  2. Size_tableID 番号とサイズ ('S','M','L') を含む

ゼロを含め、ペアが発生する頻度を出力したいと思います。例えば:

id   Pet_Type         id    SIZE
   1    'cat'            1     'S'
   2    'cat'            2     'S'
   3    'cat'            3     'L'
   4    'dog'            4     'M'
   5    'snake'          5     'S'
   6    'dog'            6     'M'

この例から、私は欲しい:

cat   | S | 2 
cat   | M | 0 
cat   | L | 1
dog   | S | 0 
dog   | M | 2 
dog   | L | 0
snake | S | 1
snake | M | 0
snake | L | 0

私はほとんど答えを持っていますが、ゼロを印刷することができないようです。

SELECT pet_type, size, COUNT(*) FROM pet_table LEFT JOIN size_table
ON pet_table.id=size_table.id GROUP BY pet_type,size;

私に与えます:

cat   | S | 2 
cat   | L | 1
dog   | M | 2 
snake | S | 1

私は機知に富んでいるので、助けていただければ幸いです。それが重要な場合は、sqlite3でこれを行います。

4

2 に答える 2

0

これを試して:

select t1.pet_type, t1.size, ifnull(t2.[count], 0) [count]
from (
    select distinct p.pet_type, t.size
    from pet_table p
    cross join (select distinct size from size_table) t) t1
left join (
    SELECT p.pet_type, s.size, COUNT(*) [count]
    FROM pet_table p
    LEFT JOIN size_table s ON p.id=s.id 
    GROUP BY p.pet_type, s.size) t2 on t1.pet_type = t2.pet_type and t1.size = t2.size
order by t1.pet_type, t1.size

SQLフィドル

于 2013-08-16T17:29:03.580 に答える