SQL查询语句求助。升级版
有两个表,
一个表放学生的一般信息,比如,姓名(唯一不重复)、年龄、性别、籍贯。
张三 20岁 男 北京
李四 21岁 男 天津
王五 20岁 女 上海
另一个表放学生的选修课程情况(每个学生选修科目和数量都不一定相同),比如姓名,学科,分数
张三 语文 90分
张三 数学 80分
李四 数学 70分
李四 英语 60分
李四 地理 90分
王五 语文 90分
王五 历史 80分
我想查询的结果是:
查询到既选修了语文,又选修了数学,同时籍贯为北京的同学的基本信息(姓名、年龄、性别、籍贯),当如何写?
谢谢!
[解决办法]
select *--指定显示列from t1 as ainner join t2 as b on a.姓名=b.姓名 inner join t2 as c on c.姓名=a.姓名where t1.籍贯=N'北京' and b.科目='语文' and c.科目='数学'
[解决办法]
select *from t1 as a inner join t2 as b on a.姓名=b.姓名where b.科目='语文' and exists(select 1 from t2 where 姓名=b.姓名 and c.科目='数学')
[解决办法]
select a.*from (一个表放学生的一般信息 a inner join 另一个表放学生的选修课程情况 b1 on a.姓名=b1.姓名) inner join 另一个表放学生的选修课程情况 b2 on a.姓名=b2.姓名where b1.学科='语文' and b2.学科='数学文'and 籍贯='北京'