【发布时间】:2018-10-30 10:46:28
【问题描述】:
有两个表:client 和 contract。
客户表:
client_code INT pk
status VARCHAR
一个客户可以有 1 个或多个合同。客户端有一个状态列,它指定它是否有有效的合同 - 值是“活动”或“非活动”。合同是为具有活动状态的客户指定的。
合约表:
contract_code INT pk
client_code INT pk
end_date DATE
合同有结束日期。今天之前的合同结束日期是过期的合同。
要求:报告要求所有活跃客户都有合同,但所有(不是部分)合同都已过期。一些示例数据如下所示:
客户数据:
client_code status
----------------------------------
1 active
2 inactive
3 active
4 active
合约数据:
contract_code client_code end_date
-------------------------------------------------------------
11 1 08-12-2018
12 1 09-12-2018
13 1 10-12-2018
31 3 11-31-2018
32 3 10-30-2018
41 4 01-31-2019
42 4 12-31-2018
预期结果:
client_code
-------------
1
结果:此客户端 (client_code = 1) 的所有合约都已过期:08-12-2018、09-12-2018 和 10-12-2018。
我需要一些帮助来编写 SQL 查询以获得此结果。我不确定我必须使用什么构造 - 可以指出我可以尝试什么。数据库是 MySQL 5.5。
【问题讨论】: