基本数据仓库 - 如何连接数据2个表格

时间:2017-12-09 13:18:43

标签: mysql join data-warehouse

我有一个代表警察部队的基本数据仓库设置: Data warehouse for the police department

每个FACT_CRIME都有一个指定的DIM_OFFICER;每个DIM_OFFICER都分配给DIM_STATION

我可以使用哪种SQL逻辑来显示所有FACT_CRIME以及相关的DIM_STATION?我的问题是要获得DIM_STATIONstation_code,我知道必须通过DIM_OFFICER来完成,因为那是关系链接,但我对SQL不够精明知道如何从2张表中获取数据。

这是我到目前为止的一个查询,它产生我之后的格式,但不是正确的结果:

select
    fact_crime.*, dim_station.station_code
from fact_crime
join dim_station
    on fact_crime.assigned_officer_id
        in (select dim_officer.officer_id from dim_officer where dim_officer.station_id = dim_station.station_id)
group by dim_station.station_code

生成结果的示例:(格式正确,但数据不正确) Sample of produced results

我期待FACT_CRIME的每个实例出现,指定的官员的电台代码也出现在表格中。

提前感谢任何能指出我正确方向的人。我仍然试图掌握SQL的基础知识,如果我需要对任何响应进行额外澄清,请致歉。

1 个答案:

答案 0 :(得分:4)

你需要两个联接,就像这样(我猜测因为你没有显示很多细节)。

...
from fact_crime c
join dim_officer o ON c.assigned_officer_id = o.officer_id
join dim_station s ON o.station_id = s.station_id

这是一种非常常见的SQL模式,因此您可以发现MySQL软件在提高效率方面做得很好。

专家提示:避免*中的SELECT *,尤其是来自大量JOIN操作结果的结果集。而是使用SELECT来提供所需列的列表。