-2

データの並べ替えについて質問があります。議論のために、過去 3 年間の毎月のアクセスに複数のテーブルがあるとしましょう。36 個のテーブルとしましょう。各テーブルには、pet という名前の列と name という名前の列があります (人の名前)。ペットは猫、犬、魚のいずれかです。各テーブルを通過するクロスクエリを作成して、人々のさまざまな名前をすべて見つけ、ペットが「猫」、「犬」、または「魚」のいずれかを持っている回数を数えたいと思います。私はこれをどのように行うのか疑問に思っていました.ジェーンが3匹の猫と2匹の犬を飼っていると言う人、「犬」のテーブルと「猫」のテーブルの出身ですか?

4

1 に答える 1

0

これが私がこのようなことに取り組む方法です。

すべてのテーブルを結合するビューを作成します。ビューは次の形式になります。

SELECT "TB1" as TableName, name, pet
FROM Table1

UNION ALL

SELECT "TB2" as TableName, Name, pet
FROM Table2

UNION ALL ...

すべてのテーブルを結合し続けます。次に、ビューに対してクエリを記述できます。

何かのようなもの

SELECT Name, Pet, Count(Pet), TableName
FROM View
Group BY Name, Pet, TableName

このような設計はメンテナンスの悪夢になるという観察を付け加えさせてください. 複数のテーブルに参加する必要がないように、すべてを日付列のある 1 つのテーブルにすることをお勧めします。翌月、ビューを更新して新しいテーブルを含める必要があります。

于 2013-10-16T19:43:45.327 に答える