2

次のように3つのテーブルがあります(1つは結果/投票を保持し、2つはルックアップテーブルです):

投票

areaid    - which links to an area table to get area name
townid    - which links to a town table to get town name
votingyn  - if a person is voting or not (Y or N)

上記の表に次のテスト データがあるとします。

1,2,'Y'
1,3,'N'
2,1,'Y'
3,3,'N'

.. など、areaid の倍数、townid の倍数、そしてもちろん、投票する場合は Y または N

だから..次の結果を得るための最も効率的な方法を見つけようとしています:

areaid でグループ化して、個別の townid カウントと、Y または N 票の数を取得します (areadid と townid が名前のルックアップ テーブルに接続されている場合):

area 1,     town1,       voting Y,   voting N
-------------------------------------------------
AREA 1      TOWN 1       23          12
AREA 2      TOWN 2       15          7

それが十分に明確かどうかはわかりません..どんな助けでも大歓迎です!

4

1 に答える 1

5

このような何かがそれを行う必要があります(テストされていません):

SELECT a.Name AS 'Area', t.Name AS 'Town',
  SUM(CASE v.votingyn WHEN 'Y' THEN 1 ELSE 0 END) AS 'Yes'
  SUM(CASE v.votingyn WHEN 'N' THEN 1 ELSE 0 END) AS 'No'
FROM VOTES AS v
  JOIN TOWN AS t ON v.townid = t.id
  JOIN AREA AS a ON v.areaid = a.id
GROUP BY (a.Name, t.Name)
于 2012-05-30T21:26:16.860 に答える