1樓:匿名使用者
這個問題之前也困擾了我很久,現在我來說說我的理解
假設三個表 stu , book ,borrow
stu :id int, name nvchar(20)
book:bookid int,title nvarchar(50),
borrow:borrowid int, id int,bookid int
三張表:
學生表 有學生的id 和名字
書表 有書的id和書的名字
借表 有借id 和學生id 以及書的id
現在有個需求 要找出 名字為 張三的學生借的書的名字 和id
查詢如下
select b.title ,
b.bookid
from book b
inner join borrow w
on b.bookid = w.bookid
inner join stu s
on s.id = w.id
and s.name ='張三'
現在有個需求
找出所有的學生的名字和id以及他們所借的書
分析這個跟上面的區別 這個首先 所有人的名字都必須顯示出來 ,即 不管他借書與否都是我要的資料,然後借的書 有則顯示 無則不顯示
select s.id ,
s.name,
b.title
from stu s
left join borrow w --因為不是所有的學生都借了書 所以這裡用left join
on s.id = w.id
left join book b --同理 這裡不是所有的學生都借到了書所以還是left join
on w.bookid =b.bookid
這裡又一個需求 把所有的借了書的人的資訊以及被借的書的資訊都顯示出來,沒有借的人也一併顯示
select s.id s.name ,b.bookid,b.title
from
book b inner join borrow w -- 這裡借書關係跟書 必然一一對應所以用inner join
on b.bookid = w.bookid
right join stu s -- 這裡有的人借了 有的沒有借 同時要顯示所有人的資訊所以right join
on w.id = s.id
right join 和 left join 在用法上和理解上沒有什麼區別,弄了半小時也理了下自己的思路希望能幫到你
2樓:
可以看看掌上醫藥健康門戶。
關於SQL語句的問題,關於SQL語句的問題,求解決
等同於count 就是分組的記錄總數 count 1 的那個1意思就是用一個長值欄位1來表示存在一條記錄用哪個數字都可以,這樣寫在欄位很多的情況下能更快 update lzhu set zaiwang select distinct zaiwang from kkkkk where kkkkk.ha...
關於SQL資料庫的問題,關於SQL新建資料庫的問題
如果你寫好了一個abc.sql檔案,再寫一個批處理檔案 bat 執行一下,就可以完成安裝,bat檔案具體寫法如下 echo off title horizon資料庫安裝 bate3 color 0a echo 正在安裝資料庫.osql s.usa p iabc.sqlecho 全部完成 s.是安裝到...
sql語句關於外聯內聯的問題,sql 資料庫 內聯外聯
就是外連結。你說的 a.yhid b.yhid 和b.yhid a.yhid,從結果上來說是沒有區別的。比如說有a,b兩個表。a表資料如下 yhid name 1 aaaaaa 2 bbbbbb 3 cccccc b表資料如下 pid yhid pnamep1 1 devlopmentp2 4 sa...