How to make condition in a UNION result?

26 Views Asked by At

How to make condition in a UNION result?

EXPLANATION: I'm doing a UNION search, it's working correctly. The problem is to make a new filter on the last WHERE. It is not being applied as can be seen in the image.

CODE:

SELECT * FROM 
(
        SELECT
            locacoes.id as id,
            locacoes.chave as chave,
            'L' AS tipo,
            locacoes.codigo as codigo,
            locacoes.localRetirada as localRetirada,
            locacoes.clienteID as clienteID,
            locacoes.dataSaida as dataSaida,
            locacoes.dataChegada as dataChegada,
            locacoes.veiculo as veiculo,
            locacoes.situacao as situacao,
            locacoes.historico AS historico,
            veiculos.placa as placa,
            veiculos.marca as marca,
            veiculos.modelo as modelo
        FROM
            locacoes
            LEFT JOIN veiculos ON veiculos.id = veiculo
        WHERE
            locacoes.chave = '1323122'
    UNION
        SELECT
            contratos.id AS id,
            contratos.chave AS chave,
            'C' AS tipo,
            contratos.codigo AS codigo,
            contratos.localRetirada AS localRetirada,
            contratos.clienteID AS clienteID,
            contratos.dataIni AS dataSaida,
            contratos.dataFim AS dataChegada,
            contratos.veiculo as veiculo,
            contratos.status AS situacao,
            contratos.historico AS historico,
            veiculos.placa as placa,
            veiculos.marca as marca,
            veiculos.modelo as modelo
        FROM
            contratos
            LEFT JOIN veiculos ON veiculos.id = veiculo
        WHERE
            contratos.chave = '1323122' 

) AS derived_table

    WHERE
        dataSaida <= '2022-02-07 13:51:00' AND dataChegada >= '2022-02-07 13:51:00' 
        AND placa = 'GEC7I31'
        OR (`historico` IS NULL) ORDER BY historico asc

Where am I wrong?

0

There are 0 best solutions below