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的class栏位与资料表2的class栏位数值相等就将他们合并, 如果资料表1的class栏位含有资料表2的class栏位没有的数值, 就将其剔除, 反推亦同. INNER JOIN的意思就是当两个资料表的某栏位含有相同的资料再合并, 如果没有就剔除.
执行上面这段SQL以後就会产生一个同时含有资料表1与资料表2的资料的新资料表, 中间的连结栏位是用两个资料表的class栏位.
这个技巧可以怎麽使用呢? 就拿文章系统来讲, 如果你有一个文章列表, 和一个文章分类.
文章列表中纪录每一个文章的资料和分类, 而文章分类纪录著分类资讯, 你可以用这个方法来将两个资料表暂时合并 (在SQL被执行时合并) 来同时存取两个资料表的资料.
RIGHT JOIN 方法
刚刚的 INNER JOIN是很棒没有错, 但是如果今天有一个文章分类里面没有任何的文章, 那由於文章列表中没有对应的分类资料, 该分类就会被剔除...这...不大对吧?! 因此还有RIGHT JOIN的方法.
程式项目名称
|
其实大致上和刚刚是一样的, 只是RIGHT JOIN会以资料表2, 也就是运算子的右边的资料表为重, RIGHT JOIN会将所有右边资料表 (也就是资料表2) 的资料都加进来, 而只将左边资料表 (资料表1) 符合的资料加进来.
这样在做文章分类清单的时候, 就算一个文章列表里面没有任何文章, 那该分类仍然会显示出来.
LEFT JOIN 方法
有RIGHT JOIN, 当然就有 LEFT JOIN...
程式项目名称
|
其实就是一样的意思啦, 之前的RIGHT JOIN是包含所有右边资料表的内容, 那LEFT JOIN当然就是包含所有左边资料表的内容棉!
只要记得:
- INNER JOIN - 两边的资料表拥有相同的优先权, 要两边都有的资料才会被包含在新的资料表.
- RIGHT JOIN - 右边的资料表拥有优先权, 右边所有的资料都会被包含, 而左边只有符合的资料才会被包含.
- LEFT JOIN - 左边的资料表拥有优先权, 左边所有的资料都会被包含, 而右边只有符合的资料才会被包含.
- 本文为转载文章 [原文]
- 关键字 : 资料表2, 资料表1, class, RIGHT, INNER, 资料, 包含, SELECT, 方法, 资料表拥, 资料才会, 符合, 原始程式码, 优先权, 资料表, 相同, 栏位, 意思, 右边资料表, 右边