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
469

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.

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

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
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!