2014-02-12 5 views
0

мне любопытно, если есть соглашение в SQL, что побуждает нас использовать Первичный ключ или Foreign Key на левом после ON заявления.Операция SQL ON: PK или FK слева как соглашение?

Я имею в виду, давайте предположим, что у нас есть две таблицы, называемые MASTER и ДЕТАЛЬ. И ОПИСАНИЕ имеет внешний ключ , который предназначен для целей мастера.

так есть ли соглашение, что приводит нас к desicion между

MASTER m inner join DETAIL d on m.ID = d.MASTER_ID 

и

MASTER m inner join DETAIL d on d.MASTER_ID = m.ID 
+5

Это не имеет никакого значения. Помните, что в SQL вы говорите системе *, что делать *, а не * как это сделать *. –

+0

@Damien_The_Unbeliever абсолютно. Вот почему я спрашиваю, существует ли какое-либо соглашение. – 3yanlis1bos

+1

Это может быть '[Detail] as d INNER JOIN [Master] Как и m'. Я не знаю, существует ли какое-либо соглашение, но я всегда стараюсь придерживаться * сначала в соединении сначала в проверке равенства *, поскольку вы представили –

ответ

1

Там не условность при помощи первичного ключа или внешнего ключа на левой после ON заявления для JOIN. SQL Engine, как указано @Damien_The_Unbeliever, не спросит вас, как получить данные, но какие данные вы хотите получить.

Тогда не имеет значения при использовании первого первичного или внешнего ключа слева после оператора ON.

+2

Нет, эти два утверждения одинаковы. 'MASTER' всегда является левой таблицей, а' DETAIL' всегда является правой таблицей. Размещение условий в 'ON' не имеет значения. –

+1

Вы правы. Я был неправ. Я обновлю ответ. –

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