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

每个FACT_CRIME都有一个指定的DIM_OFFICER;每个DIM_OFFICER都被分配给一个DIM_STATION。
我可以使用什么SQL逻辑来显示所有的FACT_CRIME和相关的DIM_STATION?我的问题是要获得DIM_STATION.station_code,我知道必须通过DIM_OFFICER完成,因为这是关系链接,但是我对DIM_OFFICER不够了解,不知道如何从两个表中获取数据。
到目前为止,这是一个查询,它产生了我想要的格式,但没有正确的结果:
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的每一个实例都会出现,指定官员的站代码也会出现在表中。
提前感谢任何能为我指明正确方向的人。我仍然试图掌握SQL的基础知识,所以如果我需要对任何响应进行更多的澄清,那么请原谅。
发布于 2017-12-09 13:54:49
你需要两个连接,就像这样(我猜是因为你没有给出太多的细节)。
...
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软件做得很好,使其高效。
Pro提示:避免使用SELECT *中的*,特别是来自结果集,这是许多JOIN操作的结果。相反,使用SELECT提供所需的列列表。
https://stackoverflow.com/questions/47728994
复制相似问题