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

Basic Data Warehouse - How to join data 2 tables away

我有一个代表警察部队的基本数据仓库设置:

每个 FACT_CRIME 都有一个分配 DIM_OFFICER;每个 DIM_OFFICER 都分配给一个 DIM_STATION.

我可以使用什么 SQL 逻辑来显示所有 FACT_CRIME 以及关联的 DIM_STATION?我的问题是要获得 DIM_STATION.station_code,我知道它必须通过 DIM_OFFICER 完成,因为那是关系 link,但我不精明SQL 足以知道如何从 2 table 秒外获取数据。

这是我目前的一个查询,它生成我想要的格式,但不是正确的结果:

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

生成结果示例:(格式正确,但数据不正确)

我希望 FACT_CRIME 的每个实例都会出现,并且分配的官员的站代码还会出现在 table.

在此先感谢任何能为我指明正确方向的人。我仍在努力掌握 SQL 的基础知识,因此如果我需要对任何回复进行额外说明,我深表歉意。

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

...
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 给出您需要的列列表。