SQL JOIN kết hợp một hoặc nhiều bảng dựa trên mối quan hệ của chúng. SQL JOIN liên quan đến một bảng cha và một mối quan hệ bảng con.
Có nhiều loại SQL JOINS:
- Tham gia nội bộ
- Tham gia bên ngoài bên trái
- Tham gia bên ngoài bên phải
- Tham gia Toàn bộ Bên ngoài
- Tham gia chéo.
Hãy hiểu từng kiểu kết hợp SQL với sự trợ giúp của các ví dụ.
Tham gia bên trong
Phép nối bên trong trong SQL là một phép nối được sử dụng rộng rãi. Nó tìm nạp tất cả các bản ghi từ cả hai bảng cho đến khi và trừ khi điều kiện phù hợp. Có nghĩa là phép nối này sẽ chỉ trả về những hàng chung trong cả hai bảng.
Cú pháp của phép nối bên trong SQL:
CHỌN Table_Name1.Colum_Name1, Table_Name1.Column_Name2, Table_Name1.Column_Name3, Table_Name2.Column_Name1, Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 INNER JOIN Table_Name2 ON table_Name1.Column2.Column =Table_NameHãy xem xét các bảng đã tồn tại, có các dữ liệu nhất định:
Bảng 1:Nhân viên
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | DÂY | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA | 4 |
Bảng 2:Người quản lý
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | KIỂM TRA |
5 | Akash Kadam | C # |
Bảng 3:Máy tính xách tay:
LAPTOPID | TÊN | NGƯỜI LAO ĐỘNG |
L101 | DELL | KHÔNG ĐẦY ĐỦ |
L102 | HP | 1002 |
L103 | LENOVO | KHÔNG ĐẦY ĐỦ |
L104 | HP | 3003 |
L105 | DELL | 4002 |
L106 | LENOVO | 4003 |
L107 | DELL | 5001 |
L108 | HP | KHÔNG ĐẦY ĐỦ |
L109 | DELL | KHÔNG ĐẦY ĐỦ |
L110 | HP | KHÔNG ĐẦY ĐỦ |
Ví dụ về phép nối bên trong SQL
Ví dụ 1: Thực thi truy vấn để tham gia Bảng nhân viên và Bảng người quản lý, đồng thời hiển thị thông tin chi tiết của nhân viên như id nhân viên, tên nhân viên, lương từ bảng của nhân viên cũng như id người quản lý và tên người quản lý từ bảng người quản lý.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_NAME TỪ NHÂN VIÊN E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;
Trong truy vấn trên, chúng tôi đã tìm nạp id nhân viên, tên, họ, lương từ bảng của nhân viên và id người quản lý, tên người quản lý từ bảng người quản lý trong đó cột id người quản lý bảng của nhân viên bằng với cột id người quản lý bảng của người quản lý. Truy vấn sẽ trả về tất cả các bản ghi đối sánh từ cả hai bảng. Id người quản lý là một cột chung giữa cả hai bảng. E là tên bí danh cho bảng của nhân viên, trong khi M là tên cho bảng của người quản lý. Trường id người quản lý được đặt làm khóa ngoại trên bảng nhân viên. Id người quản lý hoạt động như khóa chính trong bảng người quản lý, tạo mối quan hệ cha-con giữa hai bảng.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | MANAGERID | MANAGER_NAME |
1001 | VAIBHAVI | MISHRA | 65500 | 1 | Sneedeep Kaur |
2001 | PRACHI | SHARMA | 55500 | 1 | Sneedeep Kaur |
4003 | RUCHIKA | AGARWAL | 60000 | 1 | Sneedeep Kaur |
1003 | NIKHIL | VANI | 50500 | 2 | Kirti kirtane |
2002 | BHAVESH | JAIN | 65500 | 2 | Kirti kirtane |
3002 | ANUJA | DÂY | 50500 | 2 | Kirti kirtane |
3001 | PRANOTI | CHIA SẺ | 55500 | 3 | Abhishek Manish |
3003 | DEEPAM | JAUHARI | 58500 | 3 | Abhishek Manish |
4002 | ASHWINI | TÚI XÁCH | 54500 | 3 | Abhishek Manish |
4001 | RAJESH | MỤC TIÊU | 60500 | 4 | Anupam Mishra |
5001 | ARCHIT | SHARMA | 55500 | 4 | Anupam Mishra |
1002 | VAIBHAV | SHARMA | 60000 | 5 | Akash Kadam |
2003 | RUCHIKA | JAIN | 50000 | 4 | Akash Kadam |
Các bản ghi được hiển thị theo thứ tự tăng dần theo id người quản lý.
Ví dụ 2: Thực hiện truy vấn để tham gia Bảng nhân viên và bảng Người quản lý, đồng thời hiển thị thông tin chi tiết của nhân viên như id nhân viên, tên nhân viên, lương từ bảng của nhân viên và id người quản lý và bộ phận người quản lý từ bảng người quản lý nơi lương của nhân viên lớn hơn 58000.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, M.MANAGERID, M.MANAGER_DEPARTMENT TỪ NHÂN VIÊN E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE SALARY> 58000;
Trong truy vấn trên, chúng tôi đã tìm nạp id nhân viên, tên, họ, lương từ bảng của nhân viên, id người quản lý và bộ phận người quản lý từ bảng người quản lý trong đó id người quản lý từ bảng nhân viên bằng với id người quản lý từ người quản lý. chỉ bảng những hồ sơ nhân viên có mức lương lớn hơn 58000.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | MANAGERID | MANAGER_DEPARTMENT |
1001 | VAIBHAVI | MISHRA | 65500 | 1 | ORACLE |
4003 | RUCHIKA | AGARWAL | 60000 | 1 | ORACLE |
2002 | BHAVESH | JAIN | 65500 | 2 | FMW |
3003 | DEEPAM | JAUHARI | 58500 | 3 | JAVA |
4001 | RAJESH | MỤC TIÊU | 60500 | 4 | KIỂM TRA |
1002 | VAIBHAV | SHARMA | 60000 | 5 | C # |
Chỉ có sáu bản ghi được hiển thị trong đó mức lương của một nhân viên vượt quá 58000.
Ví dụ 3: Thực thi truy vấn để kết hợp bảng Nhân viên và Bảng máy tính xách tay, hiển thị thông tin chi tiết của nhân viên như id nhân viên, tên nhân viên và lương, thành phố từ bảng nhân viên, id máy tính xách tay và tên máy tính xách tay từ bảng máy tính xách tay
CHỌN EMP.EMPLOYEEID, EMP.FIRST_NAME, EMP.SALARY, EMP.CITY, LAP.LAPTOPID, LAP. TÊN TỪ NHÂN VIÊN EM BÊN TRONG THAM GIA LAP LAPTOP TRÊN EMP.EMPLOYEEID =LAP.EMPLOYEEID;
Trong truy vấn trên, chúng tôi đã tìm nạp id nhân viên, tên, lương, thành phố từ id máy tính xách tay của bảng nhân viên và tên từ bảng máy tính xách tay trong đó id nhân viên từ bảng nhân viên bằng id nhân viên từ bảng máy tính xách tay. Id nhân viên là một khóa ngoại trong bảng Máy tính xách tay, tạo mối quan hệ mẹ-con giữa bảng Nhân viên và bảng Máy tính xách tay.
Đầu ra:
EMPLOYEEID | FIRST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | LAPTOPID | TÊN |
1002 | VAIBHAV | 60000 | NOIDA | L102 | HP |
3003 | DEEPAM | 58500 | MUMBAI | L104 | HP |
4002 | ASHWINI | 54500 | NOIDA | L105 | DELL |
4003 | RUCHIKA | 60000 | DELHI | L106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | L107 | DELL |
Chỉ có năm hồ sơ của nhân viên được hiển thị.
Ví dụ 4: Viết truy vấn để hiển thị id nhân viên, họ tên, lương và phòng ban từ bảng nhân viên Id người quản lý và tên người quản lý từ bảng người quản lý bằng cách sử dụng tham gia bên trong trong đó mức lương> 55000 và phòng ban là Oracle.
CHỌN EMPLOYEEID, FIRST_NAME, SALARY, DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE SALARY> 55000 AND DEPARTMENT ='ORACLE';
Trong ví dụ truy vấn kết hợp ở trên, chúng tôi hiển thị thông tin chi tiết của nhân viên như id, tên, lương và phòng ban từ bảng của nhân viên, id người quản lý và tên người quản lý từ bảng người quản lý trong đó id người quản lý từ bảng của nhân viên bằng id người quản lý từ người quản lý chỉ những nhân viên có mức lương lớn hơn 55000 và Bộ phận là Oracle.
Đầu ra:
EMPLOYEEID | FIRST_NAME | TIỀN LƯƠNG | KHOA | MANAGERID | MANAGER_NAME |
1001 | VAIBHAVI | 65500 | ORACLE | 1 | Snehdeep Kaur |
2001 | PRACHI | 55500 | ORACLE | 1 | Snehdeep Kaur |
4003 | RUCHIKA | 60000 | ORACLE | 1 | Snehdeep Kaur |
Chỉ có ba nhân viên có mức lương lớn hơn 55000 và bộ phận là Oracle.
Ví dụ 5: Thực thi truy vấn tham gia trên bảng Máy tính xách tay, Người quản lý và Nhân viên, đồng thời hiển thị thông tin chi tiết của nhân viên, id người quản lý và id máy tính xách tay.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, M.MANAGERID, L.LAPTOPID TỪ NHÂN VIÊN E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID INNER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;
Truy vấn trên hiển thị id nhân viên, tên, họ, id người quản lý và id máy tính xách tay từ nhân viên, người quản lý và bảng máy tính xách tay. Chúng tôi tham gia ba bảng. Id nhân viên là một cột chung giữa các nhân viên và bảng máy tính xách tay và tạo ra mối quan hệ cha-con giữa ba bảng này. Giữa nhân viên và người quản lý, id người quản lý bảng là cột chung.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | MANAGERID | LAPTOPID |
4003 | RUCHIKA | AGARWAL | 1 | L106 |
3003 | DEEPAM | JAUHARI | 3 | L104 |
4002 | ASHWINI | TÚI XÁCH | 3 | L105 |
5001 | ARCHIT | SHARMA | 4 | L107 |
1002 | VAIBHAV | SHARMA | 5 | L102 |
Tham gia bên ngoài bên trái
Phép nối bên ngoài bên trái sẽ trả về tất cả các bản ghi bảng ở phía bên trái của phép nối và các bản ghi phù hợp cho bảng ở phía bên phải của phép nối. Tập kết quả chứa null cho các bản ghi không phổ biến ở phía bên phải.
Cú pháp của phép nối ngoài cùng bên trái:
CHỌN Table_Name1.Colum_Name1, Table_Name1.Column_Name2, Table_Name1.Column_Name3, Table_Name2.Column_Name1, Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 LEFT OUTER JOIN Table_Name2 ON Table_Name1.Column2.ComumnHãy xem xét các bảng hiện có, có các bản ghi sau:
Bảng 1:Nhân viên
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | DÂY | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA | 4 |
Bảng 2:Người quản lý
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | KIỂM TRA |
5 | Akash Kadam | C # |
Bảng 3:Máy tính xách tay
LAPTOPID | TÊN | NGƯỜI LAO ĐỘNG |
L101 | DELL | KHÔNG ĐẦY ĐỦ |
L102 | HP | 1002 |
L103 | LENOVO | KHÔNG ĐẦY ĐỦ |
L104 | HP | 3003 |
L105 | DELL | 4002 |
L106 | LENOVO | 4003 |
L107 | DELL | 5001 |
L108 | HP | KHÔNG ĐẦY ĐỦ |
L109 | DELL | KHÔNG ĐẦY ĐỦ |
L110 | HP | KHÔNG ĐẦY ĐỦ |
Ví dụ về SQL Left Outer Join
Ví dụ 1: Thực thi truy vấn nối ngoài cùng bên trái trên bảng Nhân viên và bảng Máy tính xách tay, nơi hiển thị id nhân viên, tên nhân viên và id máy tính xách tay.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME TỪ NHÂN VIÊN E TRÁI RA THAM GIA LAPTOP L TRÊN E.EMPLOYEEID =L.EMPLOYEEID;
Trong truy vấn trên, chúng tôi đã hiển thị id nhân viên, tên, họ từ id máy tính xách tay trong bảng của nhân viên và tên từ bảng máy tính xách tay và thực hiện truy vấn nối ngoài cùng bên trái trên hai bảng này. Truy vấn sẽ trả về giá trị null ở phía bên phải của bảng nếu các hàng không giống nhau giữa các bảng.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LAPTOPID | TÊN |
1001 | VAIBHAVI | MISHRA | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
1002 | VAIBHAV | SHARMA | L102 | HP |
1003 | NIKHIL | VANI | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
2001 | PRACHI | SHARMA | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
2002 | BHAVESH | JAIN | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
2003 | RUCHIKA | JAIN | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
3001 | PRANOTI | CHIA SẺ | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
3002 | ANUJA | DÂY | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
3003 | DEEPAM | JAUHARI | L104 | HP |
4001 | RAJESH | MỤC TIÊU | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
4002 | ASHWINI | TÚI XÁCH | L105 | DELL |
4003 | RUCHIKA | AGARWAL | L106 | LENOVO |
5001 | ARCHIT | SHARMA | L107 | DELL |
Ví dụ 2: Viết truy vấn để tìm nạp id nhân viên, họ, tên, lương từ bảng của nhân viên bên trái, kết hợp bên ngoài trên bảng máy tính xách tay có mức lương> 55000.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME TỪ NHÂN VIÊN E TRÁI RA THAM GIA LAPTOP L TRÊN E.EMPLOYEEID =L.EMPLOYEEID TẠI ĐÂU LƯƠNG> 55000;Trong truy vấn trên, chúng tôi đã tìm nạp chi tiết nhân viên từ bảng nhân viên và chi tiết máy tính xách tay từ bảng máy tính xách tay, nhưng chỉ những chi tiết nhân viên có mức lương lớn hơn 55000. Chúng tôi đã thực hiện truy vấn nối ngoài cùng bên trái trên hai bảng này. Truy vấn sẽ trả về giá trị null ở phía bên phải của bảng nếu các hàng không giống nhau giữa các bảng.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | LAPTOPID | TÊN |
1001 | VAIBHAVI | MISHRA | 65500 | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
1002 | VAIBHAV | SHARMA | 60000 | L102 | HP |
2001 | PRACHI | SHARMA | 55500 | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
2002 | BHAVESH | JAIN | 65500 | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
3001 | PRANOTI | CHIA SẺ | 55500 | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
3003 | DEEPAM | JAUHARI | 58500 | L104 | HP |
4001 | RAJESH | MỤC TIÊU | 60500 | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ |
4003 | RUCHIKA | AGARWAL | 60000 | L106 | LENOVO |
5001 | ARCHIT | SHARMA | 55500 | L107 | DELL |
Tham gia bên ngoài bên phải
Phép nối bên ngoài bên phải sẽ trả về tất cả các bản ghi bảng ở phía bên phải của phép nối và các bản ghi phù hợp cho bảng ở phía bên trái của phép nối. Tập hợp kết quả chứa rỗng đối với các bản ghi không phổ biến ở phía bên trái.
Cú pháp của phép nối ngoài bên phải:
SELECT Table_Name1.Colum_Name1, Table_Name1.Column_Name2, Table_Name1.Column_Name3, Table_Name2.Column_Name1, Table_Name2.Column_Name2, Table_Name2.Column_Name3, FROM Table_Name1 RIGHT OUTER JOIN Table_Name2 ON Table_Name1.Column2.Column =Table_NameVí dụ về SQL Right Outer Join
Ví dụ 1: Thực thi truy vấn kết hợp bên ngoài bên phải trên bảng của nhân viên và bảng máy tính xách tay, nơi hiển thị id nhân viên, tên của nhân viên.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, L.LAPTOPID, L.NAME TỪ NHÂN VIÊN E NGAY NGƯỜI RA THAM GIA LAPTOP L TRÊN E.EMPLOYEEID =L.EMPLOYEEID;Trong truy vấn trên, chúng tôi đã hiển thị id nhân viên, tên, họ từ id máy tính xách tay bảng của nhân viên và tên từ bảng máy tính xách tay và thực hiện truy vấn kết hợp bên ngoài bên phải trên hai bảng này. Truy vấn sẽ trả về giá trị null ở phía bên trái của bảng nếu các hàng không giống nhau giữa các bảng.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LAPTOPID | TÊN |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L101 | DELL |
1002 | VAIBHAV | SHARMA | L102 | HP |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L103 | LENOVO |
3003 | DEEPAM | JAUHARI | L104 | HP |
4002 | ASHWINI | TÚI XÁCH | L105 | DELL |
4003 | RUCHIKA | AGARWAL | L106 | LENOVO |
5001 | ARCHIT | SHARMA | L107 | DELL |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L108 | HP |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L109 | DELL |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L110 | HP |
Ví dụ 2: Viết truy vấn để tìm nạp id, tên và họ của nhân viên từ bảng của nhân viên. Tham gia bên ngoài bên phải trên bảng máy tính xách tay nơi tên máy tính xách tay bao gồm một trong các danh sách là Dell, HP.
CHỌN E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, L.LAPTOPID, L.NAME TỪ NHÂN VIÊN E RIGHT OUTER THAM GIA LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID WHERE L.NAME IN (' DELL ',' HP ');
Trong truy vấn trên, chúng tôi đã hiển thị thông tin chi tiết của nhân viên từ chi tiết máy tính xách tay trên bảng của nhân viên trên bảng máy tính xách tay. Chúng tôi đã thực hiện truy vấn kết hợp bên ngoài bên phải trên hai bảng này chỉ nhân viên có tên máy tính xách tay bao gồm một trong các danh sách là Dell và HP. Truy vấn sẽ trả về giá trị null ở phía bên trái của bảng nếu các hàng không giống nhau giữa các bảng.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LAPTOPID | TÊN |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L101 | DELL |
1002 | VAIBHAV | SHARMA | L102 | HP |
3003 | DEEPAM | JAUHARI | L104 | HP |
4002 | ASHWINI | TÚI XÁCH | L105 | DELL |
5001 | ARCHIT | SHARMA | L107 | DELL |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L108 | HP |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L109 | DELL |
NULL | KHÔNG ĐẦY ĐỦ | KHÔNG ĐẦY ĐỦ | L110 | HP |
Tham gia toàn bộ bên ngoài
Tham gia bên ngoài đầy đủ kết hợp kết quả của cả tham gia bên ngoài bên trái và liên kết ngoài bên phải. Full Outer Join cũng giống như Cross Join. Full Outer Joins trả về kết quả đầu ra, trong đó các hàng là phổ biến hoặc không phổ biến giữa các bảng.
Cú pháp của phép nối bên ngoài đầy đủ:
CHỌN COLUMNNAME1, COLUMNNAME2 TỪ BẢNG1 ĐẦY ĐỦ THAM GIA BẢNG2;
Ví dụ 1: Viết truy vấn để hiển thị id nhân viên, tên, họ từ id người quản lý từ bảng của nhân viên đầy đủ tham gia bên ngoài Bảng người quản lý trong đó mức lương của nhân viên lớn hơn 65000.
CHỌN NHÂN VIÊN, FIRST_NAME, LAST_NAME, M.MANAGERID TỪ NGƯỜI QUẢN LÝ ĐẦY ĐỦ THAM GIA M WHERE SALARY> 65000;
Trong truy vấn trên, chúng tôi đã hiển thị thông tin chi tiết của nhân viên và chi tiết người quản lý từ bảng nhân viên và người quản lý, nơi mức lương của nhân viên lớn hơn 65000 bằng cách sử dụng tham gia đầy đủ. Một cách đầy đủ, hãy nối từng Hàng trong bảng của nhân viên qua từng Hàng trong bảng của người quản lý, tức là tích Đề-các sẽ xảy ra. M * N
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | MANAGERID |
1001 | VAIBHAVI | MISHRA | 1 |
1001 | VAIBHAVI | MISHRA | 2 |
1001 | VAIBHAVI | MISHRA | 3 |
1001 | VAIBHAVI | MISHRA | 4 |
1001 | VAIBHAVI | MISHRA | 5 |
2002 | BHAVESH | JAIN | 1 |
2002 | BHAVESH | JAIN | 2 |
2002 | BHAVESH | JAIN | 3 |
2002 | BHAVESH | JAIN | 4 |
2002 | BHAVESH | JAIN | 5 |
Như chúng ta có thể thấy, id nhân viên 1001 kết hợp chéo với mỗi id người quản lý, giống với id nhân viên 2002.
Ví dụ 2: Thực hiện truy vấn kết hợp bên ngoài đầy đủ trên bảng Nhân viên và bảng máy tính xách tay, trong đó mức lương của nhân viên lớn hơn 60000 và vị trí của nhân viên là Pune.
CHỌN LAPTOPID, E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY FROM LAPTOP FULL THAM GIA NHÂN VIÊN E WHERE SALARY> 60000 AND CITY ='PUNE';
Trong truy vấn trên, chúng tôi hiển thị id máy tính xách tay, id nhân viên, họ tên, mức lương và thành phố từ máy tính xách tay chỉ những nhân viên tham gia đầy đủ là những người có mức lương lớn hơn 60000 và thành phố là Pune. Nếu cả hai điều kiện phù hợp với chỉ dành cho nhân viên, thì bản ghi sẽ được tìm nạp.
Đầu ra:
Tham gia chéo
Các phép nối chéo trong SQL không có gì khác ngoài được gọi là một sản phẩm cacte. Mỗi Hàng của một bảng được kết hợp hoặc hợp nhất với mỗi Hàng của bảng khác. M * N là Tham gia chéo
Cú pháp của kết hợp chéo:
CHỌN COLUMNNAME1, COLUMNNAME2 TỪ BẢNG1 CHÉO THAM GIA BẢNG2;
Ví dụ 1: Viết truy vấn để thực hiện thao tác kết hợp chéo trên bảng nhân viên và bảng người quản lý trong đó tên nhân viên bắt đầu bằng A
CHỌN NHÂN VIÊN, FIRST_NAME, M.MANAGERID TỪ NHÂN VIÊN CROSS THAM GIA NGƯỜI QUẢN LÝ M TẠI ĐÂU FIRST_NAME THÍCH 'A%';
Trong ví dụ truy vấn kết hợp bên ngoài đầy đủ ở trên, chúng tôi đã truy xuất chi tiết nhân viên và chi tiết người quản lý từ bảng nhân viên và bảng người quản lý nhưng chỉ những bản ghi có tên của nhân viên bắt đầu bằng chữ cái 'A'.
Đầu ra:
Kết quả cho thấy rằng id nhân viên là một kết hợp chéo với mỗi hàng id người quản lý.
M * N Ở đây, M =3; id nhân viên từ các bảng nhân viên
N =5; id người quản lý từ bảng người quản lý 3 * 5 =15 hàng.
Ví dụ 2: Viết truy vấn để thực hiện thao tác kết hợp chéo trên bảng máy tính xách tay và bảng nhân viên trong đó mức lương của nhân viên lớn hơn 58000 và Mumbai.
CHỌN LAPTOPID, TÊN, E.EMPLOYEEID TỪ LAPTOP CROSS THAM GIA NHÂN VIÊN E WHERE SALARY> 58000 AND CITY ='MUMBAI';
Trong truy vấn trên, chúng tôi đã hiển thị id máy tính xách tay, tên và id nhân viên từ bảng máy tính xách tay để thực hiện thao tác kết hợp chéo trên bảng nhân viên nơi mức lương của nhân viên lớn hơn 58000 và thành phố là Pune. Tham gia chéo hoạt động như M * N.
Đầu ra: