从满足条件的任何一个获取连接表中的数据

时间:2018-04-02 15:57:16

标签: php mysql sql

我有两个名为Activity And Claim的表。活动表包含活动ID和所有其他活动详细信息。声明表包含活动的所有声明相关信息。一个活动有多个声明,活动ID是声明表的外键。

在索赔表中,我为每项索赔保持不同的状态(已批准,已删除,已拒绝,已提交)。

目前,如果索赔表中的任何一项索赔以及任何一项索赔状态未在批准,拒绝,提交中,我将面临从活动表中获取数据的一个问题。

例如,如果某个活动有两个不同的声明,一个声明是已批准状态,另一个声明处于已删除状态。所以在我的SQL查询中应该返回空(因为一个声明已经批准用于活动)。在另一个示例中,如果活动只有一个声明并且状态被删除。这导致我的查询应该获取活动详细信息(因为活动只有一个声明,并且它已被删除状态)。

我目前使用的查询位于

之下
SELECT * 
FROM myactivities_4 
LEFT JOIN claims2 ON claims2.activityid = myactivities_4.activityid 
AND claim_status NOT IN ('Submitted', 'Approved','Rejected')

任何人都可以帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

您似乎想要了关于声明的 none 处于上述三种状态的活动和声明的信息:

SELECT a.*, c.*
FROM myactivities_4 a JOIN
     claims2 c
     ON c.activityid = a.activityid
WHERE NOT EXISTS (SELECT 1
                  FROM claims2 c2
                  WHERE c2.activityid = a.activityid AND
                        C2.claim_status IN ('Submitted', 'Approved','Rejected')   
                  );