SQL语句的问题
--1selectTname,CnamefromTeacher,Course,RKwhereTeacher.Tno='10001'andCourse.Cno='100'a...
--1
select Tname,Cname from Teacher,Course,RK
where Teacher.Tno ='10001'
and Course.Cno = '100'
and Teacher.Tno = RK.Tno
and Course.Cno = RK.Cno
--2
select COUNT(*) from XK
where yn = '1'
and Tno = '10001'
and Cno = '100'
--3
select COUNT(*) from XK
where yn = '0'
and Tno = '10001'
and Cno = '100'
以上3个select语句用自然语言表示:
--1.从教师表,课程表,任课表中查询教师名字其任课课程名,其中教师工号为10001,课程号为100
--2.从选课表中查询教师工号为10001,课程号为100,并且yn=1的记录条数
--3.从选课表中查询教师工号为10001,课程号为100,并且yn=0的记录条数
如果我想把后面两个select语句的查询结果,放到第1句select中一起显示,需要怎么写呢? 展开
select Tname,Cname from Teacher,Course,RK
where Teacher.Tno ='10001'
and Course.Cno = '100'
and Teacher.Tno = RK.Tno
and Course.Cno = RK.Cno
--2
select COUNT(*) from XK
where yn = '1'
and Tno = '10001'
and Cno = '100'
--3
select COUNT(*) from XK
where yn = '0'
and Tno = '10001'
and Cno = '100'
以上3个select语句用自然语言表示:
--1.从教师表,课程表,任课表中查询教师名字其任课课程名,其中教师工号为10001,课程号为100
--2.从选课表中查询教师工号为10001,课程号为100,并且yn=1的记录条数
--3.从选课表中查询教师工号为10001,课程号为100,并且yn=0的记录条数
如果我想把后面两个select语句的查询结果,放到第1句select中一起显示,需要怎么写呢? 展开
2个回答
展开全部
通过题目的意思,暂时想到一个比较简单的处理办法,不使用临时表来关联。
具体代码如下,仅供参考!
select
a.Tname
,a.Cname
,sum (case yn when '0' then 1 else '0' end) as yn0 --判断yn条件,当条件为0时,记录为1,否则为0.这样通过sum函数累加起来,得到的是yn='0'条件的总数;
,sum(case yn when '1' then 1 else '0' end) as yn1 --判断yn条件,当条件为1时,记录为1,否则为0.这样通过sum函数累加起来,得到的是yn='1'条件的总数;
from Teacher a -- 这里面的 a、b、c用来替代这些表的名称,不然显示很长且不便阅读和理解。
inner join Course b on a.Tno=b.Tno
inner join RK c on a.Tno=c.Tno
where a.Tno ='10001'
and a.Cno = '100'
group by a.Tname ,a.Cname -- 按照Tname和Cname分类显示
order by a.Tname ,a.Cname --(可选择项)按照Tname和Cname先后顺序排序显示
具体代码如下,仅供参考!
select
a.Tname
,a.Cname
,sum (case yn when '0' then 1 else '0' end) as yn0 --判断yn条件,当条件为0时,记录为1,否则为0.这样通过sum函数累加起来,得到的是yn='0'条件的总数;
,sum(case yn when '1' then 1 else '0' end) as yn1 --判断yn条件,当条件为1时,记录为1,否则为0.这样通过sum函数累加起来,得到的是yn='1'条件的总数;
from Teacher a -- 这里面的 a、b、c用来替代这些表的名称,不然显示很长且不便阅读和理解。
inner join Course b on a.Tno=b.Tno
inner join RK c on a.Tno=c.Tno
where a.Tno ='10001'
and a.Cno = '100'
group by a.Tname ,a.Cname -- 按照Tname和Cname分类显示
order by a.Tname ,a.Cname --(可选择项)按照Tname和Cname先后顺序排序显示
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-06-09
展开全部
我觉得这样两张表的架构很好,维护产品信息的时候很方便,便于扩展产品信息,不建议将数据直接更新数据。如果可以的话,建议新建视图:
CREATE View V_product_info
as
Select 表A.* , 表B.产品种类
From 表A
Left Join 表B
On 表A.购买产品编号=表B.产品编号
使用的时候: Select * From V_product_info
补充:你sql并没有执行啊!
在 sql = "update a set type=(select b.type from b where a.num=b.num) and date =" & Text1.Text & "" 后面加上
cn.Execute (str_sql)
CREATE View V_product_info
as
Select 表A.* , 表B.产品种类
From 表A
Left Join 表B
On 表A.购买产品编号=表B.产品编号
使用的时候: Select * From V_product_info
补充:你sql并没有执行啊!
在 sql = "update a set type=(select b.type from b where a.num=b.num) and date =" & Text1.Text & "" 后面加上
cn.Execute (str_sql)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询