Mysql多對多查詢方法


1.言簡意賅:

表關系:

id  name
1    老王
2    老水    
3    老六
id  name
1     小花
2     小美
3     小青    
id    girl_id   boy_id
1     2        1
2     1        1
3     3        2
4     3        3

 

SQL語句: 

SELECT
    boy.`name` as
    boy_name,
    girl.`name` as
    girl_name,
    hotel.boy_id,
    hotel.girl_id 
FROM
    boy
    INNER JOIN hotel ON boy.id = hotel.boy_id
    INNER JOIN girl ON hotel.girl_id = girl.id

結果:

boy_name  girl_name        boy_id  girl_id
老王             小劉           1    2
老王             小花           1    1
動畫             小青           2    3
設計費           小青            3    3

 

2.下面是解釋(來自:https://www.jb51.net/article/51638.htm):

 

創建視圖
 
Sql代碼 

 
1
2
3
4
SELECT t1.xxx, t2.xxx, t3.xxx
FROM (table1 t1
INNER JOIN table2 t2 ON t1.fid = t2.fid)
INNER JOIN table3 t3 ON t1.mid = t3.mid;
 

這里使用了3表關聯,對於多表關聯的 INNER JOIN 寫法有一個技巧

1. 先寫最簡單的2表關聯 INNER JOIN
2. 然后使用 () 從 FROM 之后到語句結尾全部擴起來
3. 在語句結尾開始連接與下一個表的 INNER JOIN

記住這個原則,未來進行4表關聯,5表關聯就都不是什么難事了 
  

以下是其它網友的補充:

多表聯接是十分有用的技術,因為某 些情況下,我們需要跨越多個表查詢數據。

語法格式:
FROM (((表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號) INNER JOIN 表4 ON Member.字段號=表4.字段號) INNER JOIN 表X ON Member.字段號=表X.字段號,只要套用該格式就可以了。

注意事項:
在輸入字母過程中,一定要用英文半角標點符號,單詞之間留一半角空格;
在建立數據表時,如果一個表與多個表聯接,那么這一個表中的字段必須是“數字”數據類型,而多個表中的相同字段必須是主鍵,而且是“自動編號”數 據類型。否則,很難聯接成功。
代碼嵌套快速方法:如,想連接五個表,則只要在連接四個表的代碼上加一個前后括號(前括號加在FROM的后面,后括號加在代碼的末尾即可),然后 在后括號后面繼續添加“INNER JOIN 表名X ON 表1.字段號=表X.字段號”代碼即可,這樣就可以無限聯接數據表了。
 

連接兩個數據表的用法:
FROM 表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號

連接三個數據表的用法:
FROM (表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號

連接四個數據表的用法:
FROM ((表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號) INNER JOIN 表4 ON Member.字段號=表4.字段號

連接五個數據表的用法:
FROM (((表1 INNER JOIN 表2 ON 表1.字段號=表2.字段號) INNER JOIN 表3 ON 表1.字段號=表3.字段號) INNER JOIN 表4 ON Member.字段號=表4.字段號) INNER JOIN 表5 ON Member.字段號=表5.字段號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM