我在搞查询模块,调用存储过程来实现组合查询,代码如下:
declare @ID intif isnull(@鉴定获得人,'') !=''
select @ID =[鉴定ID] from [鉴定获得人表] where 人员ID in (select ID from [人员信息表] where [姓名] like '%'+isnull(@鉴定获得人,'')+'%')
else
set @ID = 0
SELECT [ID], [鉴定编号], [鉴定级别], [状态], [成果水平], [鉴定登记号] FROM [鉴定表]
where (case isnull(@鉴定编号,'') when '' then '' else 鉴定编号end)=isnull(@鉴定编号,'')
and (case isnull(@鉴定登记号,'') when '' then '' else 鉴定登记号end)=isnull(@鉴定登记号,'')
and (case isnull(@鉴定获得人,'') when '' then '' else ID end)=@ID
and (case isnull(@鉴定级别,'') when '' then '' else 鉴定级别end)=isnull(@鉴定级别,'')
and (case isnull(@鉴定形式,'') when '' then '' else 鉴定形式end)=isnull(@鉴定形式,'')
and (case isnull(@成果水平,'') when '' then '' else 成果水平end)=isnull(@成果水平,'')
and (case isnull(@鉴定日期,'') when '' then '' else 鉴定日期end) like '%'+isnull(@鉴定日期,'')+'%'
RETURN
遇到了个很头疼的问题,我通过给ID赋值来查找记录,但是根据人名来查找的话,该ID值只有一个,不能查找到多条记录,假如那个人获得 了多个鉴定,我该怎么办?用我的方法不能实现查找出那个人获得的所有鉴定记录啊
我的思路通过输入的人名去人员表找到该人的ID,然后到鉴定人员表,获得与之匹配的鉴定ID】,该ID就是鉴定表里的ID,即为所要的,问题出来了,与那个人的ID匹配的鉴定ID可以有多个,但却只能赋一个值,怎么办啊??5555555555555555
declare @ID intif isnull(@鉴定获得人,'') !=''
select @ID =[鉴定ID] from [鉴定获得人表] where 人员ID in (select ID from [人员信息表] where [姓名] like '%'+isnull(@鉴定获得人,'')+'%')
else
set @ID = 0
SELECT [ID], [鉴定编号], [鉴定级别], [状态], [成果水平], [鉴定登记号] FROM [鉴定表]
where (case isnull(@鉴定编号,'') when '' then '' else 鉴定编号end)=isnull(@鉴定编号,'')
and (case isnull(@鉴定登记号,'') when '' then '' else 鉴定登记号end)=isnull(@鉴定登记号,'')
and (case isnull(@鉴定获得人,'') when '' then '' else ID end)=@ID
and (case isnull(@鉴定级别,'') when '' then '' else 鉴定级别end)=isnull(@鉴定级别,'')
and (case isnull(@鉴定形式,'') when '' then '' else 鉴定形式end)=isnull(@鉴定形式,'')
and (case isnull(@成果水平,'') when '' then '' else 成果水平end)=isnull(@成果水平,'')
and (case isnull(@鉴定日期,'') when '' then '' else 鉴定日期end) like '%'+isnull(@鉴定日期,'')+'%'
RETURN
遇到了个很头疼的问题,我通过给ID赋值来查找记录,但是根据人名来查找的话,该ID值只有一个,不能查找到多条记录,假如那个人获得 了多个鉴定,我该怎么办?用我的方法不能实现查找出那个人获得的所有鉴定记录啊
我的思路通过输入的人名去人员表找到该人的ID,然后到鉴定人员表,获得与之匹配的鉴定ID】,该ID就是鉴定表里的ID,即为所要的,问题出来了,与那个人的ID匹配的鉴定ID可以有多个,但却只能赋一个值,怎么办啊??5555555555555555
FROM [鉴定表] a
JOIN [鉴定获得人表] b ON b.[鉴定ID]=a.[ID]
JOIN [人员信息表] c ON c.[ID]=b.[人员ID]
WHERE c.[姓名] like '%'+isnull(@鉴定获得人,'')+'%'
and a.[鉴定编号]=@鉴定编号
and a.[鉴定登记号]=@鉴定登记号
and a.[鉴定级别]=@鉴定级别
and a.[鉴定形式]=@鉴定形式
and a.[成果水平]=@成果水平
and a.[鉴定日期]=@鉴定日期
一句话,如果提供数据库唯一性字段的信息就会得到唯一记录,否则都是符合条件的记录集,再多条件也是一样,无法绕过去。
FROM [鉴定表] a
JOIN [鉴定获得人表] b ON b.[鉴定ID]=a.[ID]
JOIN [人员信息表] c ON c.[ID]=b.[人员ID]
WHERE c.[姓名] like '%'+isnull(@鉴定获得人,'')+'%'
and (case isnull(@鉴定编号,'') when '' then '' else a.鉴定编号 end)=isnull(@鉴定编号,'')
and (case isnull(@鉴定登记号,'') when '' then '' else a.鉴定登记号 end)=isnull(@鉴定登记号,'')
and (case isnull(@鉴定级别,'') when '' then '' else a.鉴定级别 end)=isnull(@鉴定级别,'')
and (case isnull(@鉴定形式,'') when '' then '' else a.鉴定形式 end)=isnull(@鉴定形式,'')
and (case isnull(@成果水平,'') when '' then '' else a.成果水平 end)=isnull(@成果水平,'')
and (case isnull(@鉴定日期,'') when '' then '' else a.鉴定日期 end) like '%'+isnull(@鉴定日期,'')+'%'