1

シンボルと rpm の 2 つのテーブルがあります。

テーブルの詳細: rpm: rpm のエントリはシンボルをエクスポートし、同様に消費します。

シンボル: シンボル テーブルは、すべてのシンボル (エクスポートおよび消費) のコレクションです。

テーブルの説明:

シンボル: シンボル テーブルには、id、name、rpm_id (rpm テーブルの id にマップ)、エクスポートまたは消費されるかどうかを示すフラグがあります。フラグ = 1; 消費フラグ = 0; 輸出された

rpm: rpm テーブルには ID、名前があります。

詳細 コンテキスト: rpm エントリによってエクスポートされたシンボルは、他の rpm テーブル エントリによって何度も消費されます。したがって、シンボルは異なる id、rpm_id でシンボル テーブルに複数回登録されます。

問題文: エクスポートされたシンボルを特定の rpm (与えられた ID; 35 など) と、各シンボルが他の rpm エントリによって消費された回数によってリストします。

出力レイアウト:

シンボル名 | count(このシンボルが消費された回数)|

試した解決策:

SELECT symbol.name, count(個別のシンボル.rpm_id)

FROM記号、回転数

WHERE symbol.flag = 0 && symbol.rpm_id = 35

GROUP BY symbol.name;

しかし、各シンボルのカウント列に「1」が表示されますが、これは間違っています。

問題のクエリのセマンティック:

最初のクエリは、指定された rpm.id (rpm.id = 35) によってエクスポートされたすべてのシンボルを取得する必要があります。次に、結果セット内の各結果の symbol.id について、消費された回数、つまりそのカウントを見つけ、そのカウントを前に出力する必要があります。そのシンボルの。

結果を得るために何らかの方法/クエリを提案してください。

ありがとうございました。

4

1 に答える 1

0

この解決策を試してください

select 
    rpm.id , 
    rpm.rpm , 
    count(symbols.id) 
from rpm
left join symbols on symbols.rpm_id = rpm.id
where symbols.flag = 1
group by rpm.id

1は消費用です

于 2012-11-06T10:44:27.443 に答える