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?