recherche

Maison  >  Questions et réponses  >  le corps du texte

Utilisez une requête SQL pour vérifier si une entrée contient une liste de valeurs et comparer

<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粉270842688P粉270842688495 Il y a quelques jours550

répondre à tous(1)je répondrai

  • P粉799885311

    P粉7998853112023-08-31 10:19:18

    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.

    répondre
    0
  • Annulerrépondre