权利要求书
c_id claim id
1 201
2 202
3 203
4 204
claim_status
cs_id claim_id status
1 201 created
2 202 created
3 202 submitted
4 203 submitted
5 204 created
如果声明已创建并提交(如claim_id 202),则在我使用“已创建”条件进行搜索时,它不会显示。这是我的主要要求。我需要下面的结果 如果我使用status ='created'搜索,我需要获得如下记录
c_id claim_id cs_id claim_id status
1 201 1 201 created
4 204 5 204 created
如果我使用status ='submitted'进行搜索,我需要获取以下记录
c_id claim_id cs_id claim_id status
2 202 3 202 submitted
3 203 4 203 submitted
但是我无法通过以下查询获得我的结果。我是stackoverflow的新手。如果我在明确的帖子中出错了,请原谅我。
SQL:
SELECT * from claims c
INNER JOIN claim_status cs
ON c.claim_id = cs.claim_id
WHERE cs.status='created'
GROUP BY cs.claim_id
答案 0 :(得分:1)
代表'created':
SELECT * from claims c
INNER JOIN claim_status cs
ON c.claim_id = cs.claim_id
WHERE cs.status='created'
表示“已提交”:
SELECT * from claims c
INNER JOIN claim_status cs
ON c.claim_id = cs.claim_id
WHERE cs.status='submitted'
答案 1 :(得分:0)
要获取已创建但未提交的声明,请尝试以下操作:
SELECT * from claims c
INNER JOIN claim_status cs
ON c.claim_id = cs.claim_id
WHERE cs.status='created'
AND NOT EXISTS (
SELECT 1
FROM claim_status cs2
WHERE cs2.claim_id = cs.claim_id
AND cs2.status='submitted'
)
答案 2 :(得分:0)
那些是你真正的桌子吗?为什么你在另一张桌子上处理索赔状态而不是索赔?你应该在“索赔”上有一个“状态”栏,你就完成了。你可以有另一个用于版本控制的表(如果你想获得索赔的旧状态)并保存更改,时间戳等,但是对于当前状态来说,将它放在同一个表上要好得多
我知道这不是你要问的答案,但我觉得最好有这样的话:
SELECT * FROM claims WHERE status = 'created'
或
SELECT * FROM claims WHERE status = 'submitted'
它更快,更清洁,更好,一切(?)
另外,为了使它们更快,状态应该是一个整数列,“created”应该有一个相关的数字,所以你可以做
SELECT * FROM claims WHERE status = <value that means created>
提交或任何额外状态相同