2013-10-26 3 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

Это ОБЪЕДИНЕНИЕ ... – Sparky

+1

related: http://stackoverflow.com/a/11180050/1291428; ansi join vs implicit join – Sebas

+0

Привет, спасибо за обмен этой ссылкой; похоже, что рекомендуется использовать явные объединения, а не неявные – Drewdavid

ответ

1

Если вы ссылаетесь две различных таблиц в где положение и сравнить их ссылочные идентификаторы, то да, он действует то же, что и JOIN.

Однако обратите внимание, что это может быть очень неэффективным, если оптимизатор не оптимизировать его правильно видеть: Is there something wrong with joins that don't use the JOIN keyword in SQL or MySQL? и INNER JOIN keywords | with and without using them

2

Да, он присоединяется таблицы вместе с тем он будет предоставлять соответствующую информацию из всех таблиц.

Одним из основного Крушения связывающих таблиц с помощью WHERE вместо JOIN не будучи в состоянии использовать LEFT, RIGHT и 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

да, это объединение таблиц. Он называется синтаксисом ANSI JOIN, когда предложение join не используется явно. И когда используется условие соединения, это ANSI JOIN

+0

Просто любопытно, как произносится термин «ANSI»? Люди читают его как A N S Я присоединяюсь или «an-c»? –

+0

второй, что я произношу. И мой родной язык не английский. – Kinjal

Смежные вопросы