私はSQLをよく知らないので、助けを求めています。
2つのテーブルを結合し、2番目のテーブルのいくつかの値の出現をカウントして、列を持つ統計テーブルのような効果を実現する必要があります。
結果表:
- 国varchar(20)、
- サイトvarchar(20)、
- suspected_violation long、
- 確認済みの違反が長い、
- 確認済み_no_violation長い、
- not_determined long、
- トータルロング
結果テーブルには、最初の2つの列(contryとsite)が最初のテーブル "Violations"からのものであり、次の5つの列には、Statusテーブルのidの可能な値ごとに "Violations"のstatus_idの発生数(カウント)が含まれている必要があります。
これで、達成したいテーブル結果の画像をアップロードできます。
したがって、既存の2つのテーブルがあります。違反とステータスです。
違反:
- id long、
- 国varchar(20)、
- サイトvarchar(20)、
- status_id long、<-これはステータステーブルのステータスのIDです。
- ...この場合は重要ではない他の列
状態:
- id long、
- status long列「status」には、文字列値にマップされる値(1〜4)があります:違反の疑い(1)、違反の確認(2)、違反の確認なし(3)、未決定(4)
私の結合の結果は、列を含むべきテーブルを持つことです:
- 違反テーブルから:「国」と「サイト」
- ステータステーブルから:「違反の疑い」、「違反の確認」、「違反の確認なし」、「未決定」、「合計」(この列は違反テーブルでの発生のカウンターです)。
私の擬似コードと抽象試行:
SELECT v.country, v.site, count(v.status_id == 1), count(v.status_id == 2), count(v.status_id == 3), count(v.status_id == 4)
FROM Violations v JOIN Status s
ON v.status_id=s.id
GROUP BY v.country, v.site
それを行うには大きな問題があるので、罪状認否は私が正しいSQLクエリを書くのを助けます。