Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 返回混乱结果的多个联合_Sql_Ms Access_Ms Access 2013 - Fatal编程技术网

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