0

個人の ID (数字) とその下にあるセクター (数字 1 ~ 5 として指定) の 2 つの列を持つビューがあります。

人々が同じセクターに属しているかどうかを示すビューを作成したいと考えています。これには、ID1、ID2、SameSector の 3 つの列があると思います。最初の列には ID がリストされ、列 1 の各 ID について、2 番目の列にはすべての ID がリストされます。3 番目の列は if ステートメントで、セクターが両方の ID で同じ場合は 1、そうでない場合は 0 です。人は複数のセクターに属することができるため、これは少し複雑になります。

例えば:

私は持っている:

IDセクター

1 1
2 1
2 5
3 1

私が欲しい:

ID1 ID2 同一セクター
1 1 1
1 2 1
1 2 0
1 3 0
2 1 1
2 1 0

これにはある種の自己結合と if ステートメントが含まれていると思いますが、すべての ID フィールドを ID1 列にリストし、ID2 のすべての ID フィールドと一致させる方法がわかりません。

4

1 に答える 1

1

これはあなたが望むものでなければなりません:

SELECT a.ID AS ID1, b.ID AS ID2, IF(a.Sector=b.Sector,1,0) AS SameSector
FROM theTable AS a, theTable AS b

http://sqlfiddle.com/#!2/f2cbc/4

最初はもっと複雑なクエリがありましたが、同じ ID をそれ自体と比較するなど、完全なクロス結合が必要であることに気付きました。

于 2012-07-12T19:42:09.450 に答える