我在此查询中使用了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';
答案 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不再支持旧式语法,因为它可能返回不正确的结果。