Operator SQL intersect digunakan untuk menggabungkan dua atau lebih pernyataan SELECT, tetapi hanya menampilkan data yang mirip dengan pernyataan SELECT.
Sintaks untuk operasi INTERSECT:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Aturan yang harus diikuti menggunakan operator INTERSECT adalah sebagai berikut:
- Jumlah Kolom dan Urutan Kolom harus sama.
- Jenis Data harus Kompatibel.
Mari kita pahami konsep SQL INTERSECT dengan bantuan contoh.
Perhatikan tabel berikut beserta catatan yang diberikan.
Tabel 1:Siswa
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
1 | NEHA | 85 | 88 | 100 | 273 |
2 | VISHAL | 70 | 90 | 82 | 242 |
3 | SAMKEET | 75 | 88 | 96 | 259 |
4 | NIKHIL | 60 | 75 | 80 | 215 |
5 | YOGESH | 56 | 65 | 78 | 199 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
10 | PRACHI | 90 | 80 | 75 | 245 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Tabel 2:Pejantan
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NIKHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
9 | SANKET | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
102 | SAMKEET | 70 | 90 | 82 | 242 |
103 | VISHAL | 75 | 88 | 96 | 259 |
105 | YOGESWARI | 56 | 65 | 78 | 199 |
106 | VINAY | 85 | 90 | 100 | 275 |
107 | PRASHAKA | 90 | 80 | 75 | 245 |
8 | VINEET | 85 | 90 | 100 | 275 |
Contoh 1: Jalankan kueri untuk melakukan operasi INTERSECT antara tabel Student dan tabel Stud.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
Dalam kueri di atas, kami telah menggunakan dua kueri SELECT. Kueri SELECT Pertama mengambil data dari tabel Siswa. Ini melakukan operasi INTERSECT dengan data yang diambil oleh kueri SELECT Kedua yang mengambil data dari tabel Stud. Hanya record serupa antara dua tabel ini yang dipilih.
Output dari query di atas adalah:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NIKHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
9 | SANKET | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Hanya record umum antara Tabel Siswa dan tabel Stud yang ditampilkan.
Contoh 2: Jalankan kueri untuk melakukan operasi INTERSECT antara tabel Siswa dan tabel Siswa tetapi hanya menampilkan catatan Siswa dari tabel Siswa yang nilai matematikanya sama dengan 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
Output dari query di atas adalah:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Hanya catatan siswa yang ditampilkan yang nilai matematikanya sama dengan 100 dari tabel Stud dan sama antara tabel Student dan Stud.
Contoh 3: Jalankan kueri untuk melakukan operasi INTERSECT antara tabel Siswa dan tabel Siswa tetapi hanya menampilkan catatan Siswa dari tabel Siswa yang nilai kimianya lebih besar dari 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
Output dari query di atas adalah:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Hanya catatan siswa yang ditampilkan yang nilai kimianya lebih besar dari 80 dari Tabel Siswa dan sama antara tabel Siswa dan Siswa.
Contoh 4: Jalankan kueri untuk melakukan operasi INTERSECT antara tabel Siswa dan tabel Stud dan tampilkan hanya catatan Siswa yang nilai fisikanya lebih besar dari 75 dari Tabel Siswa, dan kueri pemilihan kedua yang hanya menampilkan catatan Siswa yang nilai matematikanya lebih besar dari 90 dari Pejantan.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
Output dari query di atas adalah:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Hanya catatan siswa yang ditampilkan yang nilai fisikanya lebih besar dari 75 dari Tabel Siswa, dan nilai matematika lebih besar dari 90 dari Tabel Siswa dan umum antara tabel Siswa dan Siswa.