0

以下のように、ProductionとChartという2つのテーブルがあります。

製造

Name Layer
CDV  TSK
CDV  USV
M1   OSK

チャート

Name
L1_CDV_TSK
L1_CDV_TSK
L1_M1_OSK

次のような出力を生成する必要があります。

Name Layer Count
CDV  TSK    2
CDV  USV    0
M1   OSK    1

// bse L1_CDV_TKK and L1_M1_OSK are in the Charttable.

これを実現するためにSQLクエリを作成するにはどうすればよいですか?

これは私の試みですが、Produtionテーブルのすべての行を表示することはできません

Select 
    p.Name, p.layer, Count(*) as test
from 
    Production p, Chart c 
where 
    c.chartname like '%'+ p.name+'_'+p.layer + '%'
group by 
    p.Name, p.layer 

お知らせ下さい。どうもありがとう!

4

3 に答える 3

5
Select p.Name,p.layer,Count(c.chartname) as test
from Production p
left join Chart c on c.chartname like '%'+ p.name+'_'+p.layer + '%'
group by p.Name,p.layer 

編集 :

「グラフ」リストにタイプミスがあると思いますか、希望する結果がわかりません...(TSK、TKK)

于 2012-05-30T14:09:09.330 に答える
1

これを試して:

Select p.Name,p.layer,Count(*) as test
from Production p
left join Chart c on c.chartname like '%'+ p.name+'_'+p.layer + '%'
group by p.Name,p.layer
于 2012-05-30T14:10:29.593 に答える
0

まず、新しい結合構文を学ぶ必要があります。

Select p.Name, p.layer,Count(*) as test
from Production p join
     Chart c
     on c.chartname like '%'+ p.name+'_'+p.layer + '%'
group by p.Name, p.layer

次に、カウントがゼロのものを除外しています。

必要なものを取得するには、次を試してください。

Select p.Name, p.layer,
       sum(case when c.chartname like '%'+ p.name+'_'+p.layer + '%' then 1 else 0 end) as test
from Production p cross join
     Chart c
group by p.Name, p.layer
于 2012-05-30T14:11:09.373 に答える