首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用游标的sql foreach

不使用游标的sql foreach
EN

Stack Overflow用户
提问于 2011-03-24 23:39:30
回答 3查看 444关注 0票数 1

我在sql中有一个表"Student“,它的结构是:

代码语言:javascript
复制
   StudentId   FirstName LastName

    1            X         Y

    ....

和一个语言表,它的结构:

代码语言:javascript
复制
  LanguageId   Name
    1          English
    2          Mandarin
    3          Spanish

   .....

以及关系表StudentLanguage (学生所说的语言)

代码语言:javascript
复制
  StudentId            LanguageId

    1                    1
    1                    3

    2                    1
    2                    2

在我的asp.net页面上,我想使用复选框按口语过滤学生。

例如,当我检查英语和普通话时,我想让学生同时说英语和普通话,当我检查法语、西班牙语、英语和西班牙语时,==>Get学生说法语、英语和西班牙语。

为此,我将一个名为@LanguageTable(LanguageId smallint)的语言参数表传给了一个存储过程。如何在不使用游标的情况下使用此表获取学生。

我已经尝试了CTE,但没有结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-24 23:55:37

试试这个:

代码语言:javascript
复制
select s.StudentId,s.FirstName,s.LastName
from Stundent s
join StudentLanguage sl on s.StudendID=sl.StudentId
join @LanguageTable on sl.LanguageId=@LanguageTable.LanguageId
group by s.StudentId,s.FirstName,s.LastName
having count(*)=(select count(*) from @LanguageTable)
票数 1
EN

Stack Overflow用户

发布于 2011-03-24 23:48:21

你需要relational division

代码语言:javascript
复制
SELECT s.StudentId, s.FirstName, s.LastName
FROM   Student s
WHERE  NOT EXISTS(SELECT *
                  FROM   @LanguageTable l
                  WHERE  NOT EXISTS(SELECT *
                                    FROM   StudentLanguage sl
                                    WHERE  sl.LanguageId = l.LanguageId
                                           AND sl.StudentId = s.StudentId))  
票数 1
EN

Stack Overflow用户

发布于 2011-03-24 23:55:08

我还没有测试过这个,但是:

代码语言:javascript
复制
SELECT s.StudentId, s.FirstName, s.LastName
FROM Student s
    INNER JOIN StudentLanguage sl ON sl.StudentId = s.StudentId
    INNER JOIN @Language l ON l.LanguageId = sl.LanguageId
GROUP BY s.StudentId, s.FirstName, s.LastName
HAVING Count(*) = (SELECT COUNT(*) FROM @Language)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5421726

复制
相关文章

相似问题

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