首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2008R2连接一对多

Server 2008R2连接一对多
EN

Stack Overflow用户
提问于 2014-03-10 22:11:46
回答 2查看 273关注 0票数 0

我有两个表,表名是caseparty。这两个表都有case_id。他们有一对多的关系(一个案件有多个当事方)。对于每一种情况,至少必须有一方被标记为主要当事方(政党表中的是/否字段)。我需要找到没有指派当事人参与案件的案件。

到目前为止,我有这个查询,但它只牵扯到在每个案件中不是主要当事方的当事方--但我需要它找到的只是没有指定主要当事方的情况。(我对案件的类型也有限制)。我正在使用SQLServer2008R2。提前感谢您的帮助!

代码语言:javascript
复制
select 
    [case].case_id, [case].case_number, count(party.case_id)as party_count
from 
    party
join 
    [case] on [case].case_id = party.case_id
where 
    [case].case_type_id IN(12,13,15) 
    and party.primary_party = ''
group by 
    [case].case_id, [case].case_number
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-10 22:14:32

试试这个:

代码语言:javascript
复制
select *
from case C
left join P on P.case_id = C.case_id and P.primary_party != ''
where P.case_id is null

这将选择所有没有关联的非空主方的情况。

另外,我建议使用null来表示“无主方”,而不是空字符串。

票数 0
EN

Stack Overflow用户

发布于 2014-03-10 22:23:07

虽然您的代码有点混乱,但必须说(使用SQL保留词作为表或字段名,或者我必须说的任何其他对象,即使放在括号中也不是一个好主意)

但这是你需要一个正确的外部连接的东西。

应该是这样的:

代码语言:javascript
复制
SELECT
  C.case_id, 
  C.case_number, 
  COUNT(P.case_id) AS party_count
FROM
  party P
  RIGHT OUTER JOIN [case] C ON 
    C.case_id = p.case_id AND
    C.case_type_id IN (12, 13, 15) 
WHERE 
  P.primary_party = '' AND
  P.case_id IS NULL
GROUP BY
  C.case_id, 
  C.case_number
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22312444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档