idが

2017-02-13 4 views
1

表1idが

enter image description here

表2

予想される出力

開くリンクされていない場所から別のカウント、1つのテーブルを選択| 2

保留中| 0

クローズド| 0

ように....私は

enter image description here

になったクエリ

SELECT d.status , COUNT(*) num,e.name FROM table1 d cross join table 2 e group by name; 

の下に、これを使用してみました

は、いずれかが、この上で私を助けることができます。

答えて

4

左結合が必要です。このタイプの結合では、右側の表の行が存在しない場合でも、左側の表のすべての行が表示されます。

select t2.name, count(t1.id) 
from table2 as t2 
left join table1 as t1 on t2.name = t1.status 
group by t2.name 

が故にcount(t1.id)、あなたは0が希望生成するtable1から列に集約する必要があります。 table1から行がない場合でもcount(*)1を生成します。

クロス結合は、2つのテーブルのデカルト積を作成するだけで、左側のテーブルのすべての行が右側のテーブルのすべての行に結合されます。

+0

上記の質問は正しいですか? 2しかし、私はテーブル2(オープン、キャンセル、閉鎖、固定、ホールド、オープン、ペンディング、再オープン)のすべての名前を表示し、(2,0,0,0,0,0,0 、0)。 – JMR

+0

@JMR編集していただきありがとうございます。あなたは完全に正しいです。私は2つのテーブルを混在させました。 'table2'は左側のテーブルで、左側に' table1'で結合する必要があります。一定。 –

+0

これは、(オープン、キャンセル、クローズ、固定、ホールド、オープン、保留中、再オープン)(2,1,1,1,1,1,1,1)....他のすべての場所で1を表示しています.. – JMR