2016-05-15 108 views
-1

我已在此查詢中使用JOIN,我不知道如何但我使用直接引用和結果是相關的...請幫助我如何使用左連接和/或右連接和/或內連接

感謝

問: 什麼禮節名在車牌(加泰羅尼亞)= LVU9132

SELECT P.NOME 
FROM MODELO M 
    ,VEICULO V 
    ,PROPRIETARIO P 
WHERE P.COD_PROP = V.PROPRIETARIO 
    AND V.MODELO = M.COD_MOD 
    AND V.PLACA = 'LVU9132'; 

回答

0

你在新的語法查詢:

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支持的,因爲它可以返回不正確的結果。

+0

謝謝約翰D,我從來沒有使用JOIN,我只知道這種方式P.COD_PROP = V.PROPRIETARIO。但你的解釋是完美的!謝謝!! –

+0

'INNER JOIN'與'JOIN'相同 - 我認爲很明顯,沒有額外的單詞。 – Hogan

+0

@Vitor不客氣。供參考:這些條件中的任何一個都以相同的方式工作: 'V.PROPRIETARIO * = P.COD_PROP'或'P.COD_PROP = * V.PROPRIETARIO' –

0

你不需要外部連接來回答這個問題(如提出);

SELECT P.NOME 
FROM MODELO M JOIN 
    VEICULO V 
    ON V.MODELO = M.COD_MOD JOIN 
    PROPRIETARIO P 
    ON P.COD_PROP = V.PROPRIETARIO 
WHERE V.PLACA = 'LVU9132'; 
+0

謝謝@Gordon Linoff !!!這是一樣的,但我的老師只想這樣(左連接等)!我很生氣!!! –