Ваш запрос в новом синтаксисе:
SELECT P.NOME
FROM MODELO M
inner join VEICULO V on V.MODELO = M.COD_MOD
inner join PROPRIETARIO P on P.COD_PROP = V.PROPRIETARIO
WHERE V.PLACA = 'LVU9132';
Внутреннее соединение требует как совпадающие строки присутствовать. Если соответствующая строка PROPRIETARIO
не найдена, строка VEICULO
также не будет отображаться.
Используйте следующее, если вы хотите увидеть ряд автомобилей, даже если у него нет подходящего собственника. Левое объединение возвращает нули для правой таблицы PROPRIETARIO
, если соответствующие строки не найдены. Обратите внимание, что левое соединение требует наличия таблицы левой руки, но не имеет значения, нет ли соответствующих строк в правой таблице.
Новый синтаксис (стандарт ANSI92)
SELECT P.NOME
FROM MODELO M
inner join VEICULO V on V.MODELO = M.COD_MOD
left join PROPRIETARIO P on P.COD_PROP = V.PROPRIETARIO
WHERE V.PLACA = 'LVU9132';
Синтаксис старого стиля больше не поддерживается в SQL Server 2012, так как он может возвращать неверные результаты.
Спасибо John D, я никогда не использовал JOIN, я знаю только так. P.COD_PROP = V.PROPRIETARIO. Но ваше объяснение было совершенным !! Благодаря!! –
'INNER JOIN' - это то же самое, что' JOIN' - я думаю, что нет лишнего слова. – Hogan
@Vitor Добро пожаловать. FYI: Любое из этих условий работает одинаково: 'V.PROPRIETARIO * = P.COD_PROP' или' P.COD_PROP = * V.PROPRIETARIO' –