【发布时间】:2016-03-07 23:09:40
【问题描述】:
我要两张桌子:
请求:
+----+------+----+
| id | from | to |
+----+------+----+
| 1 | aaaa | aa |
+----+------+----+
| 2 | aaab | ab |
+----+------+----+
| 3 | aabb | bb |
+----+------+----+
请求状态
+----+--------+---------+---------+
| id | req_id | status | time |
+----+--------+---------+---------+
| 1 | 1 | pending | mm-dd |
+----+--------+---------+---------+
| 2 | 1 | sent | mm-dd |
+----+--------+---------+---------+
| 3 | 2 | pending | mm-dd |
+----+--------+---------+---------+
| 2 | 2 | failed | mm-dd |
+----+--------+---------+---------+
| 4 | 3 | pending | mm-dd |
+----+--------+---------+---------+
在请求表上我必须记录:中间状态和完成请求状态。
我需要的是某种连接语句,每个请求只返回一个状态,但只有在失败或发送不存在时才返回挂起状态。
结果:
+----+------+----+---------+
| id | from | to | status |
+----+------+----+---------+
| 1 | aaaa | aa | sent |
+----+------+----+---------+
| 2 | aaab | ab | failed |
+----+------+----+---------+
| 3 | aabb | bb | pending |
+----+------+----+---------+
select r.id, r.from, r.to, s.status from requests r
join request_status s on r.id = s.req_status
where r.status not like 'pending'
将返回而没有挂起状态。
【问题讨论】:
-
数据和查询不正确。您是否测试过您发布的查询?上面的数据最好提供DDL和DML语句,post查询经过测试。
-
有一些可能性,但是你的逻辑是如何工作的,是否有应用规则,无论何时发送请求,都无法再使用该 request_id 插入数据?
-
为什么你的 request_status id 不是唯一的?