Utilisez une requête SQL pour vérifier si une entrée contient une liste de valeurs et comparer
P粉270842688
P粉270842688 2023-08-30 17:47:36
0
1
522
<p>J'ai deux tables MySql avec le schéma suivant</p> <pre class="brush:php;toolbar:false;">Courses(CNO:CHAR(10),CName:VARCHAR(50), DeptId:CHAR(3)) : chaque cours a un identifiant unique appelé CNO Registre (RNO:CHAR(10), CNO:CHAR(10), Année:INTEGER, Sem:INTEGER, Grade:CHAR)</pre> <p>La tâche actuelle consiste à trouver tous les tuples qui satisfont (r1, r2, d), dans lesquels l'étudiant avec le numéro d'étudiant r1 a complété tous les DeptIds complétés par l'étudiant avec le numéro d'étudiant r2, et le DeptId est < Les cours du département strong>ID</ Strong>. </p> <p>Ma méthode consiste à trouver d'abord tous les cours suivis dans le département par l'étudiant portant le numéro d'étudiant r2, puis à trouver de la même manière tous les cours suivis dans le département par l'étudiant portant le numéro r1, et à comparer s'ils sont les même. Mais je ne sais pas si c'est correct ni comment comparer les deux résultats. </p> <p>C'est le code que j'utilise pour vérifier tous les cours suivis par l'élève portant le numéro de collège r2 dans un département spécifique : </p> <p>Voici le lien vers la base de données de code et de données Fiddle</p>
P粉270842688
P粉270842688

répondre à tous(1)
P粉799885311

C'est ma méthode

Étape 1 : Créez un tableau avec deux colonnes, student1 et student2, contenant des combinaisons uniques d'étudiants

Par exemple :

RNO1 RNO2
1    2
1    3
2    3

Étape 2 : Créez un tableau en ajoutant un DeptId unique pour chaque DeptId différent du tableau précédent

Par exemple :

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

Étape 3 : Finalement, seuls les tuples dans lesquels RNO1 et RNO2 ont suivi le même parcours dans chaque DeptId sont retenus.

Ce qui suit est un exemple où rno1_rno2_deptid fait référence au tableau ci-dessus

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))

Ce qui précède sélectionne uniquement le cas où RNO1 et RNO2 ont le même CNO dans la même série.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal