SQL FULL OUTER JOIN được sử dụng để truy xuất tất cả các bản ghi từ cả hai bảng đã nối, bảng bên trái và bảng bên phải, nó kết hợp chức năng của phép nối ngoài bên trái và phép nối ngoài bên phải
ĐẦY ĐỦ OUTER JOIN trả về các hàng không khớp từ cả hai bảng cũng như phần chồng chéo giữa chúng. Khi không có hàng phù hợp nào tồn tại cho một hàng trong bảng bên trái, các cột của bảng bên phải sẽ có giá trị NULL cho các bản ghi đó. Tương tự, khi không có hàng phù hợp nào tồn tại cho một hàng trong bảng bên phải, các cột của bảng bên trái sẽ có giá trị NULL
Cú pháp SQL FULL OUTER JOIN
SELECT column1,column2…column[n]
FROM left_table_name
FULL JOIN | FULL OUTER JOIN right_table_name
ON left_table.column_name = right_table.column_name
[where condition]
[order by column1,column2..];
Đây,
- cột1,cột2…cột[n]. Chỉ định từng tên cột được phân tách bằng dấu phẩy từ cả hai bảng
- left_table_name. Nó là tên của bảng mà các bản ghi sẽ được so khớp với bảng bên phải,
- Right_table_name. Nó là tên của bảng mà từ đó dữ liệu sẽ được lấy ra
- ĐẦY ĐỦ THAM GIA. THAM GIA NGOÀI ĐẦY ĐỦ. Nó là từ khóa dùng để nối 2 bảng sử dụng FULL join, chúng ta có thể chỉ định từ khóa FULL JOIN hoặc FULL OUTER JOIN để thực hiện nối đúng
- [Trường hợp điều kiện]. Nó là đối số tùy chọn, được sử dụng để truy xuất các bản ghi có điều kiện
- [Sắp xếp theo cột1, cột2. ]. Đây là đối số tùy chọn, được chỉ định để hiển thị các bản ghi kết quả theo thứ tự giá trị cột đã chỉ định
CŨNG ĐỌC. Giải thích mệnh đề SQL VỚI [Ví dụ thực tiễn]
Ví dụ về SQL FULL OUTER THAM GIA
Xem xét cơ sở dữ liệu quản lý bệnh viện với bốn bảng bệnh nhân, bác sĩ, phòng thí nghiệm, hóa đơn để thực hiện các ví dụ thực tế
Bàn bệnh nhân
patient_idnameagegenderaddressdiseasedoctor_id1reema23femalealthan,Suratfever212kusum50femalevadodaraheart failure223carlin43malevapiinfection234rahul26malenavsaricancer216hansha55femalevapidiabetes22
bàn bác sĩ
doctor_idnameagegenderaddress21asif55malebaruch22dhawal40maleSurat23krishna39femaleSurat24lissa35femaleNavsari25leeba34femalebaruch26vini33femaleSurat27Dhiren32maleNavsari
Bảng hóa đơn
bill_nopatient_iddoctor_idroom_chargeno_of_days500513405004500626004808500838003403500947808906501034001501112003001501226001102501333302101501412303402
bàn thí nghiệm
Quảng cáo
lan_no Patient_iddoctor_iddateamount1012102-02-200040002022109-09-20013003032203-03-20016004012302-06-20028005042105-07-20039006022510-04-200452035042-07
SQL FULL OUTER THAM GIA với hai bảng
ví dụ 1. Viết truy vấn SQL để hiển thị thông tin bệnh nhân với chi tiết bác sĩ của họ
SELECT patient.patient_id AS 'Patient ID', patient.name AS 'Patient Name', patient.age AS 'Patient Age', patient.gender AS 'Patient Gender', patient.address AS 'Patient Address', patient.disease AS 'Patient Disease', patient.doctor_id, doctor.name AS 'Doctor Name', doctor.age AS 'Doctor Age', doctor.address AS 'Doctor Location' FROM patient
FULL OUTER JOIN doctor ON patient.doctor_id = doctor.doctor_id
- Trong truy vấn trên, SQL FULL JOIN được sử dụng để truy xuất các bản ghi kết hợp từ cả hai bảng bệnh nhân và bác sĩ
- Ở đầu ra, chúng tôi sẽ nhận được NULL trong dữ liệu bệnh nhân cho những bác sĩ không có bất kỳ bệnh nhân nào
CŨNG ĐỌC. Hàm SQL COUNT, AVG, SUM. Hàm tổng hợp trong SQL
ĐẦU RA
SQL FULL OUTER THAM GIA với ba bảng
ví dụ 2. Viết truy vấn SQL để truy xuất tất cả thông tin bệnh nhân, tất cả tên bác sĩ và chi tiết thanh toán
SELECT patient.patient_id, patient.name AS 'Patient Name', doctor.name AS 'Doctor Name', patient.disease AS 'Disease', bill.doctor_charge AS 'Doctor Charge', bill.room_charge AS 'Room Charge', bill.amount AS 'bill amount' FROM doctor
FULL OUTER JOIN patient ON patient.doctor_id = doctor.doctor_id
FULL OUTER JOIN bill ON patient.patient_id = bill.patient_id
- Trong truy vấn trên, SQL FULL OUTER JOIN được sử dụng nối ba bảng để truy xuất tập bản ghi kết hợp của tất cả các bản ghi từ ba bảng bệnh nhân, bác sĩ và hóa đơn
- SQL FULL OUTER JOIN tham gia ba bảng dựa trên cột chung, nếu các bản ghi phù hợp cho một cột chung không tồn tại, SQL trả về giá trị NULL
ĐẦU RA
SQL FULL OUTER JOIN trên nhiều bảng với Mệnh đề Where
ví dụ 3. Viết truy vấn SQL để hiển thị dữ liệu bệnh nhân nam có tuổi hơn 30 với chi tiết báo cáo phòng thí nghiệm và tên bác sĩ
SELECT patient.patient_id, patient.name AS 'Name', doctor.name AS 'Doctor name', patient.age, patient.gender, patient.address, patient.disease, doctor.address AS 'Doctor Address', laboratory.lab_no, laboratory.date, laboratory.amount FROM laboratory
FULL OUTER JOIN patient ON patient.patient_id = laboratory.patient_id
FULL OUTER JOIN doctor ON laboratory.doctor_id = doctor.doctor_id
WHERE [patient.gender = 'male'] AND [patient.age > 30]
- Trong truy vấn trên, SQL FULL OUTER JOIN được sử dụng để nối hai bảng và truy xuất bản ghi từ cả hai bảng dựa trên điều kiện và giá trị cột chung
- Đầu ra chứa một bản ghi phân tầng hai điều kiện được chỉ định bằng mệnh đề SQL và truy xuất dữ liệu từ cả ba bảng
CŨNG ĐỌC. Giải thích thủ tục lưu trữ SQL [Ví dụ thực tế]
ĐẦU RA
Ví dụ 4. Viết truy vấn SQL để hiển thị tất cả các chi tiết thanh toán của bệnh nhân với thông tin cá nhân của bệnh nhân nếu số ngày nhập viện lớn hơn 5
SELECT patient.patient_id, patient.name, patient.age, patient.gender, patient.address, patient.disease, patient.doctor_id, bill.bill_no, bill.doctor_charge, bill.room_charge, bill.no_of_days, bill.amount FROM patient
FULL OUTER JOIN bill ON patient.patient_id = bill.patient_id
WHERE [bill.no_of_days > 5]
- Trong truy vấn trên, SQL FULL OUTER JOIN được áp dụng để truy xuất các bản ghi kết hợp từ hai bảng bệnh nhân và hóa đơn
- Mệnh đề SQL where được sử dụng để kiểm tra điều kiện là không. số ngày nhập viện phải lớn hơn 5
ĐẦU RA
Quảng cáo
SQL FULL OUTER THAM GIA trên nhiều bảng với Nhóm theo khoản
SQL Right Outer Join cho phép chúng ta sử dụng mệnh đề Group by cùng với các hàm tổng hợp để nhóm các bản ghi có cùng giá trị cho cột được chỉ định
Ví dụ 5. Viết truy vấn SQL để đếm tổng số bệnh nhân của mỗi bác sĩ bằng cách kết hợp các bản ghi có thể của bệnh nhân và bác sĩ
SELECT patient.doctor_id, COUNT[patient.patient_id] AS 'Total Patient' FROM patient
FULL OUTER JOIN doctor ON patient.doctor_id = doctor.doctor_id
GROUP BY patient.doctor_id
- Trong truy vấn trên, SQL FULL OUTER JOIN được sử dụng để nối hai bảng bệnh nhân và bác sĩ để lấy các bản ghi từ cả hai bảng
- Nhóm SQL theo mệnh đề được sử dụng để tạo một nhóm có cùng một doctor_id trong bảng bệnh nhân và hàm đếm tổng hợp được sử dụng để tạo tổng số bệnh nhân của từng nhóm id bác sĩ
CŨNG ĐỌC. Giải thích hàm SQL RANK [Ví dụ thực tế]
ĐẦU RA
SQL FULL OUTER THAM GIA Sử dụng Mệnh đề Union
Nếu cơ sở dữ liệu không cho phép FULL JOIN [MySQL thì không], chúng ta có thể kết hợp LEFT OUTER JOIN và RIGHT OUTER JOIN bằng cách sử dụng mệnh đề Union để có cùng kết quả của SQL FULL OUTER JOIN
Ví dụ 6. Viết truy vấn SQL để truy xuất các bản ghi kết hợp từ bệnh nhân và bác sĩ
SELECT patient.patient_id AS 'Patient ID', patient.name AS 'Patient Name', patient.age AS 'Patient Age', patient.gender AS 'Patient Gender', patient.address AS 'Patient Address', patient.disease AS 'Patient Disease', patient.doctor_id, doctor.name AS 'Doctor Name', doctor.age AS 'Doctor Age', doctor.address AS 'Doctor Location' FROM patient
LEFT OUTER JOIN doctor ON patient.doctor_id = doctor.doctor_id
UNION
SELECT patient_1.patient_id AS 'Patient ID', patient_1.name AS 'Patient Name', patient_1.age AS 'Patient Age', patient_1.gender AS 'Patient Gender', patient_1.address AS 'Patient Address', patient_1.disease AS 'Patient Disease', patient_1.doctor_id, doctor_1.name AS 'Doctor Name', doctor_1.age AS 'Doctor Age', doctor_1.address AS 'Doctor Location' FROM patient AS patient_1
RIGHT OUTER JOIN doctor AS doctor_1 ON patient_1.doctor_id = doctor_1.doctor_id
- Trong truy vấn trên, mệnh đề UNION được sử dụng kết hợp hai truy vấn chọn SQL để thực hiện SQL FULL OUTER JOIN
- Truy vấn chọn SQL đầu tiên sử dụng SQL LEFT OUTER JOIN để tham gia bảng bệnh nhân và bác sĩ trong đó bệnh nhân là bảng bên trái
- Truy vấn chọn SQL thứ hai được sử dụng SQL RIGHT OUTER JOIN để tham gia bảng bệnh nhân và bác sĩ, trong đó bác sĩ là bảng bên phải
CŨNG ĐỌC. Giải thích các hàm ngày trong SQL bằng các ví dụ thực tế
ĐẦU RA
Quảng cáo
SQL FULL OUTER JOIN Sử dụng Mệnh đề Union và điều kiện Where
MySQL không hỗ trợ FULL OUTER JOIN nên để thực hiện FULL OUTER JOIN ta có thể sử dụng mệnh đề UNION giữa 2 truy vấn SQL select là LEFT OUTER JOIN và RIGHT OUTER JOIN, để lấy bản ghi trong MySQL có điều kiện sử dụng mệnh đề UNION ta có thể sử dụng mệnh đề Where trong SQL
Ví dụ 7. Viết truy vấn SQL để truy xuất tất cả hồ sơ bệnh nhân có tuổi đời trên 50 năm với tất cả thông tin chi tiết về bác sĩ sử dụng mệnh đề Union
SELECT patient.patient_id AS 'Patient ID', patient.name AS 'Patient Name', patient.age AS 'Patient Age', patient.gender AS 'Patient Gender', patient.address AS 'Patient Address', patient.disease AS 'Patient Disease', doctor.name AS 'Doctor Name', doctor.age AS 'Doctor Age', doctor.address AS 'Doctor Location' FROM patient
LEFT OUTER JOIN doctor ON patient.doctor_id = doctor.doctor_id
WHERE [patient.age > 50]
UNION
SELECT patient_1.patient_id AS 'Patient ID', patient_1.name AS 'Patient Name', patient_1.age AS 'Patient Age', patient_1.gender AS 'Patient Gender', patient_1.address AS 'Patient Address', patient_1.disease AS 'Patient Disease', doctor_1.name AS 'Doctor Name', doctor_1.age AS 'Doctor Age', doctor_1.address AS 'Doctor Location' FROM patient AS patient_1
RIGHT OUTER JOIN doctor AS doctor_1 ON patient_1.doctor_id = doctor_1.doctor_id
WHERE [patient_1.age > 50]
- Trong truy vấn trên, mệnh đề SQL Union được sử dụng để kết hợp tập kết quả của hai truy vấn chọn LEFT OUTER JOIN và RIGHT OUTER JOIN
- Truy vấn chọn SQL đầu tiên sử dụng SQL LEFT OUTER JOIN để tham gia bảng bệnh nhân và bác sĩ trong đó bệnh nhân là bảng bên trái, mệnh đề SQL được áp dụng với cột tuổi để kiểm tra tình trạng
- Truy vấn chọn SQL thứ hai được sử dụng SQL RIGHT OUTER JOIN để tham gia bảng bệnh nhân và bác sĩ, trong đó bác sĩ là bảng bên phải, mệnh đề SQL được áp dụng với cột tuổi để kiểm tra tình trạng
CŨNG ĐỌC. Đã giải quyết. Tên cột không rõ ràng của SQL [Hoạt động 100%]
ĐẦU RA
Tóm lược
Trong bài viết về SQL FULL OUTER JOIN này, chúng tôi đã trình bày tổng quan về SQL FULL OUTER JOIN với cú pháp và giải thích từng đối số cú pháp, chúng tôi đã thảo luận về các ví dụ thực tế về SQL FULL OUTER JOIN bắt đầu với hai bảng, nhiều bảng, SQL FULL OUTER JOIN với