将2个条件绑定在一起

时间:2012-02-09 23:21:22

标签: sql

我在SQL上并不聪明,并且创建具有2个列表的SP时遇到问题,我想通过此列表过滤表: 例如输入到SP lstNames:阿里;约翰 lstSubjs:A;甲

ScoreTable:

姓名|主题|评分

阿里| B | 80

约翰| A | 70

我的SP的初始脚本:\

Select Score from ScoreTable \
where Name in  SplitStringToTable(lstNames ) and Subject in SplitStringToTable(lstSubjs)

SplitStringToTable我的函数:将值拆分为;成为表

根据我的查询,结果将是:80,70 结果应为:0,70 这是错误的,因为学生=阿里& subject = A socre不存在,但我的查询返回80,因为它将搜索所有可用值。

我相信解决方案应该将第一个条件与第二个条件绑定,就好像我搜索名称= Ahmed我应该在包含Ahmed的同一记录中搜索主题(只有主题= B)不搜索所有主题。

请建议。

1 个答案:

答案 0 :(得分:0)

你必须改变它,但这会给你一些想法。另请查看this.

select score
from scoreTable st
Left JOIN dbo.SplitStringToTable(lstNames) name
ON st.name = name.name
LEft jOin dbo.splitStringToTable(lstSubject) sub
oN st.Subject = sub.subject