有表hr_epm_main hr_epm_cert
cno cname cno name
01 张磊 01 身份证
02 李强 01 驾驶证
03 张伟 01 健康证
04 王强 02 身份证
。。。。 02 驾驶证
02 劳保证
03 身份证
03 健康证
03 学生证
04 身份证
04 驾驶证
04 劳保证
04 健康证
。。。。。。。
cno 字段相关联 需要查出 同时拥有身份证、驾驶证、健康证的人 或者 同时拥有身份证、劳保证的人 或者查出同时拥有所有证件的人 查询条件不固定 证书类型不限可能还有其他证件。 求大神解答。
可以分两种语句
--1.查询有某指定证件组合的人,下列就是同时身份证、驾驶证、健康证的人 或者 同时拥有身份证、劳保证的人
select a.cno,a.cname如果你想查询同时拥有身份证、驾驶证、健康证、劳保证。可以在语句后面继续添加OR,例如
or sum(case when b.name in('身份证','驾驶证','健康证','劳保证') then 1 esle 0 end)=4 此时必须等于4,因为必须同时要满足有4本证。 希望这样写你能明白这语句
--2.查询拥有所有证件的人
select a.cno,a.cname上述语句:select zhengjianSum=count(distinct name) from hr_epm_cert 的意思是。系统总的证件类型有多少本。加入有10本。那么上述语句就是同时拥有这10本证的人。
希望这样的回答能帮助到你,谢谢!