基本数据仓库 - 如何连接 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
给出您需要的列列表。
我有一个代表警察部队的基本数据仓库设置:
每个 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
给出您需要的列列表。