Несколько UNION возвращают грязные результаты - PullRequest
0 голосов
/ 22 апреля 2019

Я делаю домашнее задание и у меня сейчас три таблицы.

[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, descricao, valor, umt, data, hora, local, categoria, categoria_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])

;

И результат грязный, он должен возвращаться в одном столбце, но использует три столбца, как вы можете видеть здесь: https://i.imgur.com/F1xp8x9.png

Как я могу решить это? Вы можете мне помочь? Я использую MS Access 2013

Спасибо.

1 Ответ

0 голосов
/ 22 апреля 2019

использовать подзапрос и max ()

   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 
...