Verwenden Sie eine SQL-Abfrage, um zu prüfen, ob ein Eintrag eine Werteliste enthält, und vergleichen Sie ihn
P粉270842688
2023-08-30 17:47:36
<p>Ich habe zwei MySql-Tabellen mit dem folgenden Schema</p>
<pre class="brush:php;toolbar:false;">Courses(CNO:CHAR(10),CName:VARCHAR(50), DeptId:CHAR(3)): Jeder Kurs hat eine eindeutige ID namens CNO
Register(RNO:CHAR(10), CNO:CHAR(10), Jahr:INTEGER, Sem:INTEGER, Note:CHAR)</pre>
<p>Die aktuelle Aufgabe besteht darin, alle Tupel zu finden, die (r1, r2, d) erfüllen, in denen der Student mit der Studentennummer r1 alle vom Studenten mit der Studentennummer r2 ausgefüllten DeptIds abgeschlossen hat und die DeptId <p> strong>ID</ Kurse der Strong>-Abteilung. </p>
<p>Meine Methode besteht darin, zuerst alle Kurse zu finden, die der Student mit der Studentennummer r2 in der Abteilung abgeschlossen hat, und dann auf ähnliche Weise alle Kurse zu finden, die der Student mit der Studentennummer r1 in der Abteilung abgeschlossen hat, und zu vergleichen, ob sie es sind Dasselbe. Aber ich weiß nicht, ob das richtig ist und wie ich die beiden Ergebnisse vergleichen soll. </p>
<p>Dies ist der Code, den ich verwende, um alle Kurse zu überprüfen, die der Schüler mit der Mittelschulnummer r2 in einer bestimmten Abteilung abgeschlossen hat: </p>
<p>Hier ist der Link zum Code und den Daten DB Fiddle</p>
这是我的方法
步骤1: 创建一个带有两列的表,student1和student2,其中包含学生的唯一组合
例如:
步骤2: 创建一个表,为上一个表的每个不同的DeptId添加一个唯一的DeptId
例如:
步骤3: 最后,只保留RNO1和RNO2在每个DeptId中都选修了相同课程的元组。
以下是一个示例,其中rno1_rno2_deptid指的是上面的表
以上只选择RNO1和RNO2在同一系别中具有相同CNO的情况。