第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

查找同時(shí)選修了C01及C02兩門課程的學(xué)生姓名及學(xué)號

查找同時(shí)選修了C01及C02兩門課程的學(xué)生姓名及學(xué)號

慕虎7371278 2018-07-17 11:10:50
sQL語句求解釋 答案中join不懂?dāng)?shù)據(jù)庫中有如下三個(gè)表:學(xué)生表(學(xué)號id,姓名name,性別sex,系部depart,年齡age)8個(gè)學(xué)生記錄選課表(學(xué)號id,課程號cid,成績grade) 12門課程課程表(課程號cid,課程名cname,學(xué)分Ccredit) 6門課程答案:select 學(xué)生表.姓名,A.學(xué)號from 選課表as A join 選課表as B on A.學(xué)號=B.學(xué)號join 學(xué)生表on 學(xué)生表.學(xué)號=A.學(xué)號
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

join兩個(gè)選課表,如果學(xué)生選了2個(gè)及以上的課程,得到的數(shù)據(jù)是翻n倍的,答案不對,至少不完整。

 

正常思路:

1.得到所有包含C01、C02課程的選課:

select A.學(xué)號,B.課程名 from 選課表 as A join 課程表 as B on A.課程號=B.課程號  where B.課程名 in ('C01','C02')order by A.學(xué)號

2.得到同時(shí)包含C01、C02課程名的學(xué)號:

 select A.學(xué)號 from 選課表 as A join 課程表 as B on A.課程號=B.課程號 where B.課程名 in ('C01','C02') 
 group by A.學(xué)號 having count(A.學(xué)號>=2

3.關(guān)聯(lián)學(xué)生表,得到姓名和學(xué)號:

select C.姓名,C.學(xué)號 from 學(xué)生表 as C where C.學(xué)號 in (    select A.學(xué)號 from 選課表 as A join 課程表 as B on A.課程號=B.課程號where B.課程名 in ('C01','C02') 
    group by A.學(xué)號 having count(A.學(xué)號>=2)

 

測試SQL:

-- 學(xué)生表declare @student table(id int identity(1,1),name nvarchar(20),sex bit default(0),depart nvarchar(20) default '',age int default 18);-- 選課表declare @course table(studentid int,classid int,grade int default 100);-- 課程表declare @class table(cid int identity(1,1),cname nvarchar(20),ccredit int default 100);-- 8個(gè)學(xué)生記錄insert into @student(name) values('a'),('b'),('c'),('d'),('e'),('f'),('g'),('h');-- 6門課程insert into @class(cname) values('C01'),('C02'),('C03'),('C04'),('C05'),('C06');-- 12門課程insert into @course(studentid,classid)    values(1,1),(1,2),(1,3),(2,1),(2,2),(3,1),(4,2),(5,3),(6,1),(7,1),(8,2),(8,3)--select * from @student--select * from @course--select * from @classselect c.id,c.name from @student as c where c.id in (    select a.studentid from @course as a    inner join @class as b on a.classid=b.cid    where b.cname in ('C01','C02') 
    group by a.studentid having count(a.studentid)>=2);


查看完整回答
反對 回復(fù) 2018-08-16
  • 1 回答
  • 0 關(guān)注
  • 9897 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號