Ada dua jadual, terangkan secara ringkas.
Jadual 1:
Jadual hubungan antara kursus dan pelajar
sid cid
1 | 1
1 | 2
Pelajar nombor 1 telah memilih kursus dengan cid 1 dan 2
Jadual 2:
Jadual kursus khusus d
hari cid mula tamat
1 | 2 | 14 | 16
2 | 2 | 13 | 15
Kursus cid ialah 1 pada hari Selasa 14:00-16:00
Selain itu, terdapat meja pelajar s, sid sname. Jadual kursus c, cid cname
Di sini dapat dilihat daripada r dan d bahawa 1 pelajar ini telah memilih dua kursus yang bercanggah. Bagaimana untuk menggunakan pernyataan sql untuk menanyakan rekod bercanggah tersebut?
Maksudnya, bagaimana dengan rekod seorang pelajar sid memilih cid yang bercanggah masa?
Anda boleh menggunakan sambungan untuk menanyakan cid yang sepadan dengan sid dan masa yang sepadan Kemudian bagaimana untuk menentukan sama ada kursus bercanggah dalam masa?
Lampiran: Senario soalan ini dilihat dalam set soalan Saya juga bersetuju dengan pertimbangan semasa memilih kursus
Ini mudah untuk diselesaikan:
Ketahui semua kursus yang pelajar ini telah mendaftar
Semak sama ada terdapat sebarang konflik dalam masa kursus ini
Semak untuk melihat sama ada mereka berada pada hari yang sama Jika mereka berada pada hari yang sama, bandingkan masa mula dan tamat untuk melihat jika terdapat sebarang konflik atau pertindihan
Tiada masalah jika mereka tidak berada pada hari yang sama
Ditambah:
Namun, masalah ini harus dielakkan semasa mendaftar, dan tiada konflik dibenarkan.
Semasa mendaftar, semak sama ada terdapat percanggahan masa antara masa kursus yang dia telah daftar dan kursus yang telah dia daftarkan Jika ada konflik, pendaftaran tidak akan dibenarkan.
Untuk membandingkan dua tempoh masa pada garis masa untuk melihat jika terdapat sebarang konflik, ia sebenarnya mudah untuk dikira
A - B, C - D
A - C - B atau A - D - B
C - A - D atau C - B - D
Akan terdapat persimpangan antara empat situasi, menunjukkan konflik masa.
Sebenarnya, saya berpendapat bahawa kursus yang bercanggah sebegini harus dinilai apabila pelajar memilih kursus, dan ia tidak sepatutnya ditambahkan pada pangkalan data
Kaedah:
Setiap kali pelajar memilih kursus, mula-mula gunakan masa kursus yang dipilih untuk bertanya sama ada data bercanggah semasa sudah wujud dalam pangkalan data
Contohnya:
Jika pelajar dengan sid = 1 telah memilih kursus dengan cid = 1, dan kemudian apabila memilih kursus dengan cid = 2, sql akan menjadi seperti berikut:
Perkara yang anda semak ialah sama ada terdapat kursus yang dipilih dalam tempoh masa tersebut pada hari tersebut Jika ada keputusan, bermakna masa kursus yang anda pilih bercanggah dengan kursus yang anda daftarkan #🎜🎜. #
Masalah sebegini boleh diselesaikan dengan penyambungan diri.