Saya mempunyai dua jadual MySql dengan skema berikut
Courses(CNO:CHAR(10),CName:VARCHAR(50), DeptId:CHAR(3)): Setiap kursus mempunyai ID unik yang dipanggil CNO Daftar(RNO:CHAR(10), CNO:CHAR(10), Tahun:INTEGER, Sem:INTEGER, Gred:CHAR)Tugas semasa ialah mencari semua tupel yang memuaskan (r1, r2, d), di mana pelajar dengan nombor pelajar r1 telah melengkapkan semua DeptId yang dilengkapkan oleh pelajar dengan nombor pelajar r2, dan DeptId ialah < strong>ID kursus jabatan Strong>.
Kaedah saya ialah mencari dahulu semua kursus yang disiapkan di jabatan oleh pelajar dengan nombor pelajar r2, dan kemudian juga mencari semua kursus yang disiapkan di jabatan oleh pelajar dengan nombor pelajar r1, dan bandingkan sama ada ia adalah sama. Tetapi saya tidak tahu sama ada ini betul atau bagaimana untuk membandingkan kedua-dua keputusan.
Ini ialah kod yang saya gunakan untuk menyemak semua kursus yang disiapkan oleh pelajar dengan nombor sekolah menengah r2 dalam jabatan tertentu:
Berikut ialah pautan ke kod dan data DB Fiddle
Ini kaedah saya
Langkah 1:Buat jadual dengan dua lajur, pelajar1 dan pelajar2, yang mengandungi gabungan unik pelajar
Contohnya:
Langkah 2:Buat jadual dengan menambahkan DeptId unik untuk setiap DeptId berbeza daripada jadual sebelumnya
Contohnya:
Langkah 3:Akhirnya, hanya tupel di mana RNO1 dan RNO2 telah mengambil kursus yang sama dalam setiap DeptId dikekalkan.
Berikut ialah contoh di mana rno1_rno2_deptid merujuk kepada jadual di atas
Di atas hanya memilih kes di mana RNO1 dan RNO2 mempunyai CNO yang sama dalam siri yang sama.