所以我有一个关于对我的数据进行排序的问题,让我们说为了论证,我在过去3年的每个月都有多个表访问一个,所以让我们说36个表,每个表都有一个名为pet的Colum和一个列叫名字(人名)。宠物可以是猫,狗或鱼。我想制作一个Cross Query,通过每个表找到所有不同的人名,然后计算宠物有多少次“Cat”,“Dog”或“Fish”。我想知道如何去做这件事,也可以深入了解一下是否有人说简有3只猫和2只狗,其中表示“狗”的来自哪个表和“猫”来自哪里?
答案 0 :(得分: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
让我加上观察,这样的设计将成为维护的噩梦。最好将一个表放在一个带有日期列的表中,这样就不必加入多个表。下个月,您必须更新视图以包含新表。