每个FACT_CRIME
都有一个指定的DIM_OFFICER
;每个DIM_OFFICER
都分配给DIM_STATION
。
我可以使用哪种SQL逻辑来显示所有FACT_CRIME
以及相关的DIM_STATION
?我的问题是要获得DIM_STATION
。station_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
我期待FACT_CRIME
的每个实例出现,指定的官员的电台代码也出现在表格中。
提前感谢任何能指出我正确方向的人。我仍然试图掌握SQL的基础知识,如果我需要对任何响应进行额外澄清,请致歉。
答案 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
来提供所需列的列表。