article文章表:
aid title content uid 1 文章1 文章1正文內容... 1 2 文章2 文章2正文內容... 1 3 文章3 文章3正文內容... 2 4 文章4 文章4正文內容... 4
user用戶表:
uid username email 1 admin admin@5idev.com 2 小明 xiao@163.com 3 Jack jack@gmail.com
LEFT JOIN:
SELECT article.aid,article.title,user.username FROM article LEFT JOIN user ON article.uid = user.uid
aid title username 1 文章1 admin 2 文章2 admin 3 文章3 小明 4 文章4 NULL
RIGHT JOIN:
SELECT article.aid,article.title,user.username FROM article RIGHT JOIN user ON article.uid = user.uid
aid title username 1 文章1 admin 2 文章2 admin 3 文章3 小明 NULL NULL Jack
INNER JOIN:
SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid
aid title username 1 文章1 admin 2 文章2 admin 3 文章3 小明
SELECT...FROM table1 INNER | LEFT | RIGHT JOIN table2 ON conditiona
FROM左表(table1),JOIN右表(table2)
INNER JOIN (內連接): 取得兩個表中存在連接匹配關系的記錄,INNER可以省略。
LEFT JOIN (左連接): 取得左表(table1)完全記錄,即使右表(table2)並無對應匹配記錄。
RIGHT JOIN (右連接): 取得右表(table2)完全記錄,即是左表(table1)並無匹配對應記錄。
例子1:
$access = Db::table('qi_role_user')->alias('a')
->join('qi_role_menu b', 'a.role_id = b.role_id', 'INNER') //'INNER'為默認,可省略
->where('a.user_id',$uid)
->select();
例子2:
mysql中操作
SELECT * FROM qi_role_user LEFT JOIN qi_role_menu ON qi_role_menu.role_id = qi_role_user.role_id WHERE qi_role_user.user_id = 1;