Forum

Yampiz Forum

Sharing let knowledge Spreaded, Reading let spirits growth, Creative let culture extended, Let us
  • 禁止廣告文
  • 知識傳播
  • 閱讀
  • 心靈成長
  • 創作
  • 文化傳承
Forum Dictionary / Programming / Database / Mysql /

用SQL合併資料表

New Subject
Random
Previous
Next
|
用SQL合併資料表

INNER JOIN 方法

Sql = "SELECT * FROM 資料表1 INNER JOIN 資料表2 ON 條件"

SELECT * 的 * 代表所有欄位, 也就是從資料表選取所有欄位.
INNER JOIN的意思是將資料表1與資料表2合併, 而 ON 之後的條件要成立.
這條件怎麼寫呢?
假如說資料表1有一個class欄位而資料表2也有一個class欄位, 那ON你可以寫資料表1.class = 資料表2.class
xxx.yyy , xxx代表的是資料表, yyy代表的是欄位名稱.

現在如果將這整段寫出來的話:

程式項目名稱
  1. /* 原始程式碼 */
  2. Sql = "SELECT * FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.class = 資料表2.class"

意思也就是如果資料表1的class欄位與資料表2的class欄位數值相等就將他們合併, 如果資料表1的class欄位含有資料表2的class欄位沒有的數值, 就將其剔除, 反推亦同. INNER JOIN的意思就是當兩個資料表的某欄位含有相同的資料再合併, 如果沒有就剔除.

執行上面這段SQL以後就會產生一個同時含有資料表1與資料表2的資料的新資料表, 中間的連結欄位是用兩個資料表的class欄位.

這個技巧可以怎麼使用呢? 就拿文章系統來講, 如果你有一個文章列表, 和一個文章分類.
文章列表中紀錄每一個文章的資料和分類, 而文章分類紀錄著分類資訊, 你可以用這個方法來將兩個資料表暫時合併 (在SQL被執行時合併) 來同時存取兩個資料表的資料.

RIGHT JOIN 方法

剛剛的 INNER JOIN是很棒沒有錯, 但是如果今天有一個文章分類裡面沒有任何的文章, 那由於文章列表中沒有對應的分類資料, 該分類就會被剔除...這...不大對吧?! 因此還有RIGHT JOIN的方法.

程式項目名稱
  1. /* 原始程式碼 */
  2. Sql = "SELECT * FROM 資料表1 RIGHT JOIN 資料表2 ON 資料表1.class = 資料表2.class"

其實大致上和剛剛是一樣的, 只是RIGHT JOIN會以資料表2, 也就是運算子的右邊的資料表為重, RIGHT JOIN會將所有右邊資料表 (也就是資料表2) 的資料都加進來, 而只將左邊資料表 (資料表1) 符合的資料加進來.

這樣在做文章分類清單的時候, 就算一個文章列表裡面沒有任何文章, 那該分類仍然會顯示出來.

LEFT JOIN 方法

有RIGHT JOIN, 當然就有 LEFT JOIN...

程式項目名稱
  1. /* 原始程式碼 */
  2. Sql = "SELECT * FROM 資料表1 LEFT JOIN 資料表2 ON 資料表1.class = 資料表2.class"

其實就是一樣的意思啦, 之前的RIGHT JOIN是包含所有右邊資料表的內容, 那LEFT JOIN當然就是包含所有左邊資料表的內容囉!
只要記得:

  • INNER JOIN - 兩邊的資料表擁有相同的優先權, 要兩邊都有的資料才會被包含在新的資料表.
  • RIGHT JOIN - 右邊的資料表擁有優先權, 右邊所有的資料都會被包含, 而左邊只有符合的資料才會被包含.
  • LEFT JOIN - 左邊的資料表擁有優先權, 左邊所有的資料都會被包含, 而右邊只有符合的資料才會被包含.
  • This is a reposted article. [The Source]
  • Keywords : 資料表1, 資料表2, class, RIGHT, INNER, 資料, 資料表, 包含, SELECT, 方法, class欄位, 資料表擁, 資料才會, 符合, 程式, 目名稱, 合併, 原始程式碼, 優先權, 相同
0 0
2013-12-05T15:08:00+0000


  • Now, you can post comments by Facebook Account when your Yampiz account was logout or unvariable. whatever, we suggest to post comment by Yampiz Account to get more bounds to join new events of Heyxu
Comment
 
Verify
  • Auto Platform
    For better browsing experience, it will auto detects your device to display webpage.
  • Bug Report
    Tell us about the idea, problem and errors you found.
  • Comodo Secure
    The sensitive data transmission adopts by SSL-2048 authenticated encryption.
  • Copyright
    © 2009 YamPiz Digital Inc. & Jaby Group. All rights reserved.
  • Revised Version
    V2.2.061
    03 Aug 2023 (GMT+8)