如何从两个不同的表中获取记录

时间:2019-03-19 07:56:18

标签: sql sql-server

我有两个具有df_new = df.copy() list_df_new_index = list(df_new.index) for index in list_df_new_index: cntr, prod = index df_new.loc[cntr, prod] = df_new.loc[cntr, prod]*df_scale.loc[prod] print(df_new) 0 foo A 0.000000 B 0.001700 C 3.745981 bar A 0.000000 B 0.167234 C 1.906900 关系的数据库表,如下所示

CaseMaster(caseId,case#,标题等)

CaseStages(stageId,caseId,stageName,....,律师名...)

以上关系意味着每种情况都经历多个阶段(初审,撤销,执行等)。在每个阶段,他们可以是不同的律师,也可以没有律师。我想列出所有阶段都没有律师的所有案件(不是阶段)。

我尝试使用caseId上的1 to M语句来执行此操作,但不知道如何仅提取那些没有律师的案件。

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以使用WHERE NOT EXISTS编写查询,如下所示。

SELECT cm.caseid, 
       cm.[case#], 
       cm.title 
FROM   casemaster cm 
WHERE  NOT EXISTS (SELECT 1 
                   FROM   casestages cs 
                   WHERE  cs.caseid = cm.caseid 
                          AND cs.lawyername IS NOT NULL) 

如果您真的想使用GROUP BY进行操作,可以按照以下步骤进行操作。

select cm.caseid,cm.title
from CaseMaster cm
inner join CaseStages cs on cs.caseid=cm.caseid
group by cm.caseid,cm.title
having sum(case when cs.lawyerName is null then 0 else 1 end)=0

Online Demo

答案 1 :(得分:0)

禁止使用

 select t1.* from casemaster t1
 where  caseid not in ( select caseid from casestages t2 where 
                      t2.laywername is not null)

答案 2 :(得分:0)

在查询中使用“ distinct”关键字,以避免重复。