我有两个表,表名是case和party。这两个表都有case_id。他们有一对多的关系(一个案件有多个当事方)。对于每一种情况,至少必须有一方被标记为主要当事方(政党表中的是/否字段)。我需要找到没有指派当事人参与案件的案件。
到目前为止,我有这个查询,但它只牵扯到在每个案件中不是主要当事方的当事方--但我需要它找到的只是没有指定主要当事方的情况。(我对案件的类型也有限制)。我正在使用SQLServer2008R2。提前感谢您的帮助!
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发布于 2014-03-10 22:14:32
试试这个:
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来表示“无主方”,而不是空字符串。
发布于 2014-03-10 22:23:07
虽然您的代码有点混乱,但必须说(使用SQL保留词作为表或字段名,或者我必须说的任何其他对象,即使放在括号中也不是一个好主意)
但这是你需要一个正确的外部连接的东西。
应该是这样的:
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_numberhttps://stackoverflow.com/questions/22312444
复制相似问题