新手求救助!子查询问题

猪猪猪怕 2014-05-26 10:23:59
1。题目:找出所在2009年最多开设一次的课程
关系:section(course_id ,sec_id ,semester,year,building,room_number,time_slot_id)
course( course_id, title, dept_name, salary)
查询语句:
select T.course
from course as T
where 1>=(
select count(R.course_id)
from section as R
where T.course_id=R.course_id /*这句说话是什么意思*/
and R.year=2009
)
希望做出解读。。看不懂事怎么回事。。另外如果用 unique怎么改写该查询、

问题2.假设我要定义一个这样的查询
select ID
FROM
(
select *
from section,teaches
where section.course_id=teaches.course_id and section.sec_id=teaches.sec_id
and section.semester=teaches.semester and section.year=teaches.year
)AS C

但是出现这样的错误:多次为'C' 指定了列'course_id'。
要求使用from 子句中的子查询 ,怎么解决

问题3:
存在以下关系:T(A,B) R(B,C)
是否存在这样的问题:B是T的外键,在R关系B属性中的数据不在T关系中的B属性中。
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdashewan 2014-05-27
  • 打赏
  • 举报
回复
关于第三个问题,如果A表中存在B表的外键,那么A表的该外键数据必须存在于B相对应的主键中,也就是说A表的外键数据必须首先存在于B表中
xdashewan 2014-05-27
  • 打赏
  • 举报
回复
引用 2 楼 u013933438 的回复:
题目1 那里我的疑问是整个查询的意思,我知道那里是个关联关系,但是如果不看问题,只看这个查询我就看不懂是什么意思了,另外怎么使用unique来实现。 题目二解决了 题目3是例如B表中的外键是在A表,但是这外键中有元组不属于A表。 存不存在这情况。
第一个问题,你可以这样理解

select T.course
 from course as T, (
 select count(course_id) as cnt, course_id
 from section
 where year=2009
group by course_id
  ) R
 where T.course_id=R.course_id 
and R.cnt >= 1
猪猪猪怕 2014-05-27
  • 打赏
  • 举报
回复
引用 1 楼 gaojier1000 的回复:
1、表明子查询与主查询的关联关系啊; 2、你采用select *,在你的第二个查询中,两个表都有course_id,所以会有提示,建议罗列字段,不要用*; 3、我实在理解不了。
题目1 那里我的疑问是整个查询的意思,我知道那里是个关联关系,但是如果不看问题,只看这个查询我就看不懂是什么意思了,另外怎么使用unique来实现。 题目二解决了 题目3是例如B表中的外键是在A表,但是这外键中有元组不属于A表。 存不存在这情况。
  • 打赏
  • 举报
回复
1、表明子查询与主查询的关联关系啊; 2、你采用select *,在你的第二个查询中,两个表都有course_id,所以会有提示,建议罗列字段,不要用*; 3、我实在理解不了。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧