關於sql關聯問題!內連結和左聯接怎麼一起使用

2023-01-01 03:16:10 字數 1316 閱讀 6657

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...