如何使用左连接和/或右连接和/或内连接

时间:2016-05-15 02:16:41

标签: sql oracle join

我在此查询中使用了JOIN,我不知道如何使用直接引用,结果是正确的...请帮助我

由于

问题: 什么牌照的名称在牌照(placa)= 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';

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分: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的空值。请注意,左连接需要存在左侧表,但不关心右侧表中是否没有匹配的行。

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

新语法(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不再支持旧式语法,因为它可能返回不正确的结果。