首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -联合应用条件

问MySQL -联合应用条件
EN

Stack Overflow用户
提问于 2020-10-30 16:36:55
回答 1查看 30关注 0票数 0

我正在进行以下选择:

代码语言:javascript
复制
(SELECT id, chave, 'L' as tipo, codigo, clienteID, dataSaida, dataChegada, veiculo, situacao FROM locacoes WHERE chave = '1111111111111' && situacao='C')
    UNION
(SELECT id, chave, 'C' as tipo, codigo, clienteID, dataIni as dataSaida, dataFim as dataChegada,veiculo, status as situacao FROM contratos WHERE chave = '1111111111111' && status='F' )

结果我有:

​

​

现在我需要对结果应用一个条件.

代码语言:javascript
复制
WHERE dataSaida >= '2020-05-06 11:26:00' AND dataChegada <= '2020-05-06 11:26:00'

我试过这样做,但行不通。

代码语言:javascript
复制
(SELECT id, chave, 'L' as tipo, codigo, clienteID, dataSaida, dataChegada, veiculo, situacao FROM locacoes WHERE chave = '1111111111111' && situacao='C')
    UNION
(SELECT id, chave, 'C' as tipo, codigo, clienteID, dataIni as dataSaida, dataFim as dataChegada,veiculo, status as situacao FROM contratos WHERE chave = '1111111111111' && status='F' )
WHERE dataSaida >= '2020-05-06 11:26:00' AND dataChegada <= '2020-05-06 11:26:00'

我该怎么办?

谢谢。

图谋

企图2

代码语言:javascript
复制
(SELECT id, chave, 'L' as tipo, codigo, clienteID, dataSaida, dataChegada, veiculo, situacao FROM locacoes WHERE chave = '1111111111111' && situacao='C' && dataSaida >= '2020-05-06 11:26:00' AND dataChegada <= '2020-05-06 11:26:00')
        UNION
(SELECT id, chave, 'C' as tipo, codigo, clienteID, dataIni as dataSaida, dataFim as dataChegada, veiculo, status as situacao FROM contratos WHERE chave = '1111111111111' && status='F' && dataIni >= '2020-05-06 11:26:00' AND dataFim <= '2020-05-06 11:26:00')

尝试3

代码语言:javascript
复制
SELECT * FROM
(
    SELECT id, chave, 'L' as tipo, codigo, clienteID, dataSaida, dataChegada, veiculo, situacao FROM locacoes WHERE chave = '1111111111111' && situacao='C'
        UNION
    SELECT id, chave, 'C' as tipo, codigo, clienteID, dataIni as dataSaida, dataFim as dataChegada, veiculo, status as situacao FROM contratos WHERE chave = '1111111111111' && status='F' 
)
AS sub
WHERE sub.dataSaida >= '2020-05-06 11:26:00' AND sub.dataChegada <= '2020-05-06 11:26:00'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-30 16:48:34

可以将所有结果收集到子查询中并转换为derived_table,然后应用筛选器对派生表进行筛选。

https://dev.mysql.com/doc/refman/8.0/en/derived-tables.html

之后,您应该更改比较操作符,这样您就可以说(假设api日期是星期三下午3点),给我所有的记录

exitDate(dataSaida)在周三下午3点之前,arrivalDate(dataChegada)在>=周三下午3点之前。

这应该是从派生表获得结果后的修正。

代码语言:javascript
复制
SELECT * FROM
    (    
        SELECT id, chave, 'L' as tipo, codigo, clienteID, dataSaida, dataChegada, veiculo, situacao FROM locacoes WHERE chave = '1111111111111' && situacao='C'
        UNION
        SELECT id, chave, 'C' as tipo, codigo, clienteID, dataIni as dataSaida, dataFim as dataChegada,veiculo, status as situacao FROM contratos WHERE chave = '1111111111111' && status='F'
    ) as derived_table
WHERE dataSaida <= '2020-05-06 11:26:00' AND dataChegada >= '2020-05-06 11:26:00'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64612373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档