3
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(如果不是,该怎么称呼它)?

这是一个维度模型,通过使用代理键和主键来匹配细节

4

3 回答 3

2

是的,它将表格连接在一起,因此它将提供所有表格的相关信息。

通过WHERE代替链接表的一个主要缺点JOIN是无法使用LEFT, RIGHTFull显示一个表中的记录,即使在另一个表中丢失也是如此。

但是,您的 SQL 语句无效。您没有链接dim_locations到其他任何一个表,并且该FROM子句中缺少它。

使用INNER JOIN与您的WHERE子句相当的查询可能类似于以下内容:

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
于 2013-10-26T04:45:02.217 回答
2

是的,它正在加入表格。当未显式使用连接子句时,称为非 ANSI JOIN 语法。而当使用join子句时,就是ANSI JOIN

于 2013-10-26T05:11:16.080 回答
1

如果您在 where 子句中引用两个不同的表并比较它们的引用 ID,那么是的,它的作用与JOIN.

但是请注意,如果优化器没有正确优化它,这可能会非常低效 请参阅:在 SQL 或 MySQL 中不使用 JOIN 关键字的连接是否有问题?INNER JOIN 关键字 | 使用和不使用它们

于 2013-10-26T04:39:09.120 回答