自連線及聯表查詢練習

2021-10-08 17:21:51 字數 1264 閱讀 4788

資料表與自身進行連線

需求:從乙個包含欄目id , 欄目名稱和父欄目id的表中 查詢父欄目名稱和其他子欄目名稱

-- 編寫sql語句,將欄目的父子關係呈現出來 (父欄目名稱,子欄目名稱) 

-- 核心思想:把一張表看成兩張一模一樣的表,然後將這兩張表連線查詢(自連線)

select a.categoryname as '父欄目',b.categoryname as '子欄目'

from category as a,category as b

where a.`categoryid`=b.`pid`

-- 思考題:查詢參加了考試的同學資訊(學號,學生姓名,科目名,分數)

select s.studentno,studentname,subjectname,studentresult

from student s

inner join result r

on r.studentno = s.studentno

inner join `subject` sub

on sub.subjectno = r.subjectno

-- 查詢學員及所屬的年級(學號,學生姓名,年級名)

select studentno as 學號,studentname as 學生姓名,gradename as 年級名稱

from student s

inner join grade g

on s.`gradeid` = g.`gradeid`

-- 查詢科目及所屬的年級(科目名稱,年級名稱)

select subjectname as 科目名稱,gradename as 年級名稱

from subject sub

inner join grade g

on sub.gradeid = g.gradeid

-- 查詢 資料庫結構-1 的所有考試結果(學號 學生姓名 科目名稱 成績)

select s.studentno,studentname,subjectname,studentresult

from student s

inner join result r

on r.studentno = s.studentno

inner join `subject` sub

on r.subjectno = sub.subjectno

where subjectname='資料庫結構-1'

聯表查詢 內連線 外連線

1.說明 聯表查詢可實現兩個或多個表之間的連線查詢,一般用於有主外來鍵關係表之間的連查詢,這裡拿兩個有主外來鍵關係的表來舉例說明聯表查詢的使用。student表 其中classid為外來鍵 class表 2.內連線查詢 查詢出學生的所有資訊 select from student a,class b...

聯表查詢 內連線 外連線

內連線 inner join 語句1 隱式的內連線,沒有inner join,形成的中間表為兩個表的笛卡爾積。select s.stuid,s.stuname,c.courseid,c.coursename from student as s,course as c where s.stuid c....

重新了解資料庫 聯表查詢和自連線

聯表查詢分為inner join left join right join left join左連線 以左表為主。結果會將左表所有的查詢資訊列出,而右表只列出on後條件與左表滿足的部分。right join左連線 以右表為主。結果會將右表所有的查詢資訊列出,而左表只列出on後條件與右表滿足的部分。查...