Sql 返回混乱结果的多个联合
我正在做作业,我现在有三张桌子Sql 返回混乱结果的多个联合,sql,ms-access,ms-access-2013,Sql,Ms Access,Ms Access 2013,我正在做作业,我现在有三张桌子 [veiculos] -placa (PK) -categoria -categoria_valor -cor -ano [infracao] -placa (PK) -codigo -descricao -valor -umt -data -hora -local [proprietario] -placa (PK) -nome -endereco 我必须执行SQL查询,以获得结果placa、nome、endereco、codigo、descripao、v
[veiculos]
-placa (PK)
-categoria
-categoria_valor
-cor
-ano
[infracao]
-placa (PK)
-codigo
-descricao
-valor
-umt
-data
-hora
-local
[proprietario]
-placa (PK)
-nome
-endereco
我必须执行SQL查询,以获得结果placa、nome、endereco、codigo、descripao、valor、umt、data、hora、local、categoria、categoria\u valor、cor、ano
我用这个:
SELECT placa, null AS nome, null AS endereco, codigo, descricao, data, hora, local, valor, umt FROM infracao WHERE (placa=[@PLACA])
UNION
SELECT null AS placa, nome, endereco, null, null, null, null, null AS tipo, null, null FROM proprietario WHERE (placa=[@PLACA])
UNION
SELECT null, null, null, null, null, null, categoria AS tipo, categoria_valor, cor, ano FROM veiculos WHERE (placa=[@PLACA])
)
结果很混乱,它必须返回单列,但使用了三列,如您所见:
我怎样才能解决它?你能帮助我吗?我正在使用MS Access 2013
谢谢。使用子查询和max()
非常感谢。正如预期的那样,它只使用一行,但表名显示了类似于“Expr(num)”的内容,正如您在这里看到的:您知道如何修复它吗?@bilb0k编辑的答案实际上您需要使用列btw的别名,如果它有助于标记为acceptedHello,我现在遇到这个错误:
循环引用是由别名laca引起的
它在更改所有别名后开始工作。非常感谢。你为什么要使用联盟
?为什么不使用连接
?
select
max(placa) as laca,
max(nome) as nome,
max(endereco) as endereco,
max(codigo) as codigo,
max(descricao) as descricao,
max(data) as data,
max(hora) as hora,max(local) as local,max(valor) as valor,
max(umt) as umt from
(SELECT placa, null AS nome, null AS endereco, codigo, descricao, data, hora, local, valor, umt FROM infracao WHERE (placa=[@PLACA])
UNION
SELECT null AS placa, nome, endereco, null, null, null, null, null AS tipo, null, null FROM proprietario WHERE (placa=[@PLACA])
UNION
SELECT null, null, null, null, null, null, categoria AS tipo, categoria_valor, cor, ano FROM veiculos WHERE (placa=[@PLACA])
) a