参见英文答案 > Explicit vs implicit SQL joins 12个
SELECT
dim_date.date, dim_locations.city, fact_numbers.metric
FROM
dim_date, fact_numbers
WHERE
dim_date.id = fact_numbers.fk_dim_date_id
AND
dim_locations.city = "Toronto"
AND
dim_date.date = 2010-04-13;
因为我没有使用JOIN命令,所以我想知道这是否确实是一个JOIN(如果不是,那该怎么称呼它)?
这是通过使用代理和主键来匹配细节的方式的维度模型
解决方法:
是的,它将表格连在一起,因此它将提供所有表格的相关信息.
通过WHERE而不是JOIN链接表的一个主要缺点是无法使用LEFT,RIGHT和Full来显示来自一个表的记录,即使在另一个表中丢失也是如此.
但是,您的SQL语句无效.您没有将dim_locations链接到其他任何一个表,并且它在FROM子句中缺失.
使用与WHERE子句相当的INNER JOIN的查询可能如下所示:
SELECT DD.date, DL.city, FN.metric
FROM dim_date AS DD
JOIN fact_numbers AS FN ON DD.id = FN.fk_dim_date_id
JOIN dim_locations AS DL ON DL.id = FN.fk_dim_locations_id
WHERE DL.city = 'Toronto'
AND DD.date = 2010-04-13