天天看點

SQL-三張表關聯查詢(INNER JOIN)

【使用場景】:

現有A\B\C 三張表,現在要查詢并展示A表和C表中的某些字段,但是A、C兩表沒有相同字段,無法關聯,此時有B表恰好有兩個字段,一個字段和A表一個字段相同,一個字段和C表一個字段相同,我們稱B表為“中間表”,是以通過B表把A、C表關聯起來

方法一(推薦):
SELECT  A1,A2,C1,C2      --展示A表中的A1\A2字段和C表中的C1\C2
FROM  B                         --中間表
INNER JOIN A ON A.A1 = B.B1   --A表中的與B表中相同的字段
INNER JOIN C ON C.C1 = B.B1    --C表中的與B表中相同的字段
where    xxxxx     ---條件你自己按照需求來加,沒有條件就不寫where了

方法二(有點笨,但也好用,寫子查詢)
原理:兩兩關聯,在關聯第三張表
select  C.C1,C.C2,D.*     --列印出C表的C1,C2字段和D表中的select 後面的字段,即A1,A2,A3,B1,B2,B3
from C, (select  A1,A2,A3,B1,B2,B3  from A,B )  D   --先把A,B兩張表關聯起來,命名為D表,再與C表關聯,注意,A,B表關聯時一定要記得列印出B表中與C表相同的字段
where   xxxxx    ---條件你自己按照需求來加,沒有條件就不寫where了

           

口徑了解記憶方法:

1、首選找出“中間表”

2、select * from :固定格式照寫,select後面跟你要列印的表的字段,from後面跟中間表

3、接着寫兩個 INNER JOIN A ON ,"A"替換成另外兩張表,兩個ON 後跟中間表與剛替換A時用的表,相同字段關聯起來。

4、有判斷條件的加where,後跟判斷條件,沒有就不寫,至此完畢。