Gunakan pertanyaan SQL untuk menyemak sama ada entri mengandungi senarai nilai dan bandingkan
P粉270842688
P粉270842688 2023-08-30 17:47:36
0
1
519
<p>Saya mempunyai dua jadual MySql dengan skema berikut</p> <pre class="brush:php;toolbar:false;">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)</pra> <p>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>. </p> <p>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. </p> <p>Ini ialah kod yang saya gunakan untuk menyemak semua kursus yang disiapkan oleh pelajar dengan nombor sekolah menengah r2 dalam jabatan tertentu: </p> <p>Berikut ialah pautan ke kod dan data DB Fiddle</p>
P粉270842688
P粉270842688

membalas semua(1)
P粉799885311

Ini kaedah saya

Langkah 1: Buat jadual dengan dua lajur, pelajar1 dan pelajar2, yang mengandungi gabungan unik pelajar

Contohnya:

RNO1 RNO2
1    2
1    3
2    3

Langkah 2: Buat jadual dengan menambahkan DeptId unik untuk setiap DeptId berbeza daripada jadual sebelumnya

Contohnya:

RNO1 RNO2 DeptId
1    2    IME
1    2    CHE
1    2    ECO
1    3    IME
1    3    CHE
2    3    ECO

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

SELECT
   *
FROM
   rno1_rno2_deptid as d
WHERE
   NOT EXISTS((SELECT DISTINCT CNO FROM Register AS r WHERE r.RNO = d.RNO1 AND r.DeptId = d.DeptId) 
   MINUS 
   (SELECT DISTINCT CNO FROM Register AS r WHERE r.RNO = d.RNO2 AND r.DeptId = d.DeptId))

Di atas hanya memilih kes di mana RNO1 dan RNO2 mempunyai CNO yang sama dalam siri yang sama.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan