查詢“001”課程比“002”課程成績高的所有學生的學號
//結題思路 同一個學生 學習課程001和學習課程002 成績的比較
那麼怎麼固定成同一個學生呢
首先 我們可以很簡單 的查詢出來 課程等於001學生 的學號 和 課程等於002學生的學號
接下來 怎麼固定是同一個學生呢
select stuid from student 查詢出來所有學生的id 然後stuid 等於課程001的學生id 同時也登陸課程002的學生id
具體查詢:
SELECT tblstudent.StuId
from tblstudent
where
(SELECT TC.Score FROM tblscore TC WHERE TC.CourseId='001'and tblstudent.StuId=tc.StuId)
”>
(SELECT tb.Score FROM tblscore Tb WHERE Tb.CourseId='002' and tblstudent.StuId=Tb.StuId)
第二個:查詢學過葉平老師所教的所有課程的同學的學號,姓名
我們很容易 就能根據葉平查詢到教師號 根據教師號查詢到課程號
然後呢 我們密碼了 怎麼查
————————————————
其實我們可以換一種思路 我們先查詢出來 所有學過葉平老師課程的學生也包括學歷一門課程的人
我們查詢出來課程號 我們就能查出學號 select 學號 from score where 課程號 in(......裏面是上面查詢到的課程號) 這個時候我們就查詢出來所有的學號了 然後我們想查詢出來那些學生都學了 我們是不是可以換個思路思考一下 比如這個老師一共教了兩門課
我們這個是時候是不是可以按學號分組 count(學號) 然後where count(學號)=2
查詢出來這個老師一共教了幾門課就不多說了
直接上sql
SELECT 學號,COUNT(課程號) from score where 課程號 in(
SELECT 課程號 from course WHERE 教師號=(
SELECT 教師號 from teacher WHERE 教師名稱='孟扎扎'))
GROUP BY 學號
HAVING COUNT(課程號) =(
SELECT COUNT(課程號)課程號 from course WHERE 教師號=(
SELECT 教師號 from teacher WHERE 教師名稱='孟扎扎'))
查詢課程002比001成績低的學生
SELECT * from student st where(
(select 成績 from score s1 where `課程號` ='0002'AND st.學號 = s1.學號)>
(select 成績 from score s2 where `課程號` ='0001' AND st.學號 = s2.學號))
/*查詢沒有學全所有課程的同學的學號 我們可以先查詢學全的學號*/
/*我們先查詢課程的總數*/
SELECT COUNT(*) from course
/*按學生分組查詢所學課程的總數*/
select 學號,COUNT(課程號) from score
GROUP BY 學號
/*然後等於課程總數就行*/
HAVING COUNT(課程號) =(SELECT COUNT(*) from course)
/*然後查詢名稱 兩種方法 一種是in 一種是右連接*/
SELECT 姓名,學號 FROM student where 學號 in(select 學號 from score
GROUP BY 學號
/*然後等於課程總數就行*/
HAVING COUNT(課程號) =(SELECT COUNT(*) from course))
/*最好查出出來沒有學全的學生*/
SELECT 姓名,學號 FROM student where 學號 not/*這個地方直接加not就行*/ in(select 學號 from score
GROUP BY 學號
/*然後等於課程總數就行*/
HAVING COUNT(課程號) =(SELECT COUNT(*) from course))