-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

让我补充一点,这样的设计将成为维护的噩梦。最好将所有内容都放在一个带有日期列的表中,这样您就不必加入多个表。下个月您将不得不更新视图以包含新表。

于 2013-10-16T19:43:45.327 回答