關聯查詢經典案例

例1 場景:有用戶表sys_user,用戶崗位關聯表 sys_user_post ,崗位表sys_post

SELECT * from sys_user t;
SELECT * from sys_user_post t;
SELECT * from sys_post t;

字段如下:

查詢用戶名稱以及該用戶的崗位名稱信息:

過程如下:

SELECT u.user_name,up.post_id from sys_user u LEFT JOIN sys_user_post up on u.user_id = up.user_id;

SELECT u.user_name,up.post_id,p.post_name from sys_user u LEFT JOIN sys_user_post up on u.user_id = up.user_id LEFT JOIN sys_post p on up.post_id = p.post_id;

結果:

場景2  用戶表(學生表、導師表或者員工與上級經理等)是同一張表sys_user,學生與導師關係對應表sys_user_tutor,表結構如下:

要求查詢出員工id,員工姓名,與該員工的導師id,導師姓名:

SELECT s.user_id as stuId, s.user_name as stuName,t.user_id as tutorId,t.user_name as tutorName FROM sys_user s LEFT JOIN sys_user_tutor st on s.user_id = st.user_id LEFT JOIN sys_user t on t.user_id = st.tutor_id;

查詢結果如下:

常用sql總結:

SELECT * from sys_user t;
SELECT * from sys_user_post t;
SELECT * from sys_post t;
SELECT * from sys_user_tutor t;

SELECT u.user_name,up.post_id from sys_user u LEFT JOIN sys_user_post up on u.user_id = up.user_id;

SELECT u.user_name,up.post_id,p.post_name from sys_user u LEFT JOIN sys_user_post up on u.user_id = up.user_id LEFT JOIN 
sys_post p on up.post_id = p.post_id;

-- 按工號
SELECT * FROM user s LEFT JOIN student_tutor st on s.code = st.stuCode LEFT JOIN user t on st.tutorCode = t.code;
SELECT s.code as stuCode,s.name as stuName,t.code as tutorCode,t.name as tutorName FROM user s LEFT JOIN student_tutor st 
on s.code = st.stuCode LEFT JOIN user t on st.tutorCode = t.code;

-- 按ID
SELECT * FROM user s LEFT JOIN student_tutor st on s.id = st.stuId LEFT JOIN user t on st.tutorId = t.id;
SELECT s.id as stuId, s.name as stuName,t.id as tutorId,t.name as tutorName FROM user s LEFT JOIN student_tutor st 
on s.id = st.stuId LEFT JOIN user t on st.tutorId = t.id;

-- 實戰
SELECT s.user_id as stuId, s.user_name as stuName,t.user_id as tutorId,t.user_name as tutorName FROM sys_user s LEFT JOIN 
sys_user_tutor st on s.user_id = st.user_id LEFT JOIN sys_user t on t.user_id = st.tutor_id;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章