连接多维度 table 的记录的最佳方式是什么,这些记录都由一个共同的事实 table 连接
what is the best way to join records of multiple dimension tables that are all connected by a common fact table
所以我有一个连接多个维度 table 的事实 table。
假设维度 tables 我有客户、产品和日期。
客户有id,name
产品有编号,价格
日期有id,年份
事实 table 有 cus_id、pro_id 和 date_id。
所有 id 都是来自上面 tables.
的外键
如果我想显示具有 cus_name、pro_price、date_year 的 table。
有效连接这些 table 的查询是什么。
谢谢。
为了回答我尝试过的评论中的问题,我还没有尝试过任何东西,只是因为我不知道怎么做。我了解如何加入 table 的客户和产品,如果它们通过外键关联,但在这种情况下,客户仅与事实 table 相关,我可以加入客户和事实 table 通过加入 customer.id = fact_table.cus_id,但我不知道如何加入客户和产品。
谢谢
SELECT *
从事实 F
LEFT JOIN 客户 C
ON C.id = F.cus_id
LEFT JOIN 产品 P
ON P.id = F.pro_id
LEFT JOIN 日期 D
ON D.id = F.date_id
既然你加入了 id,他们就不可能是双重的
这将显示 Fact table 中的每一行(使用 ForEach 循环)
注意:这不会显示所有数据,因为并非所有日期都在 Fact 中(但因为我假设 Fact == invoice 所以不需要)
所以我有一个连接多个维度 table 的事实 table。 假设维度 tables 我有客户、产品和日期。
客户有id,name
产品有编号,价格
日期有id,年份
事实 table 有 cus_id、pro_id 和 date_id。 所有 id 都是来自上面 tables.
的外键如果我想显示具有 cus_name、pro_price、date_year 的 table。
有效连接这些 table 的查询是什么。
谢谢。
为了回答我尝试过的评论中的问题,我还没有尝试过任何东西,只是因为我不知道怎么做。我了解如何加入 table 的客户和产品,如果它们通过外键关联,但在这种情况下,客户仅与事实 table 相关,我可以加入客户和事实 table 通过加入 customer.id = fact_table.cus_id,但我不知道如何加入客户和产品。
谢谢
SELECT * 从事实 F
LEFT JOIN 客户 C ON C.id = F.cus_id
LEFT JOIN 产品 P ON P.id = F.pro_id
LEFT JOIN 日期 D ON D.id = F.date_id
既然你加入了 id,他们就不可能是双重的 这将显示 Fact table 中的每一行(使用 ForEach 循环)
注意:这不会显示所有数据,因为并非所有日期都在 Fact 中(但因为我假设 Fact == invoice 所以不需要)