2013-10-26 21 views
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(如果没有,请调用它)?这是MySQL JOIN吗?

这是通过使用代理和主键投其所好细节

+0

这是一个JOIN ... – Sparky

+1

相关:http://stackoverflow.com/a/11180050/1291428; ansi加入vs隐式加入 – Sebas

+0

嗨,感谢您分享该链接;看起来好像建议使用显式连接而不是隐式 – Drewdavid

回答

2

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

链接表的通过WHERE,而不是JOIN一个主要的垮台并不能够使用LEFTRIGHT,并且Full从一个表中显示的记录,即使在缺少其他。

但是,您的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 
2

是的,它是连接表。当join子句没有明确使用时,它被称为非ANSI JOIN语法。当使用join子句时,它是ANSI JOIN

+0

只是好奇,“ANSI”这个词是怎么表达的?人们会把它看作是我加入的还是“an-c”? –

+0

第二个我发音。我的母语不是英语。 – Kinjal