recherche

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

Requête PHP SQL pour séparer plusieurs colonnes (dans la même ligne) en lignes distinctes

<p>J'ai un tableau qui répertorie les résultats des tests des étudiants. Chaque ligne contient un identifiant d'étudiant et il y a des colonnes, chaque colonne représentant un résultat de test individuel. Je dois maintenant créer une requête qui me permettra de voir une ligne distincte pour le numéro d'étudiant correspondant à chaque résultat de test. J'ai recherché Stack Overflow pour trouver la meilleure approche, mais je n'en ai pas trouvé une qui semble efficace. J'ai écrit le code ci-dessous pour un étudiant (1 000 002), mais il semble trop complexe pour ce que j'essaie de réaliser et ne fonctionne que pour trois résultats de tests. Je dois donc ajouter plus de code pour obtenir les 16 points. Existe-t-il un moyen simple de le faire avec une seule requête (de préférence) ou dois-je extraire les lignes, puis utiliser une boucle pour créer un tableau à partir de chaque élément (de préférence) ? </p> <pre class="brush:php;toolbar:false;">SELECT scores_uid , score1 DEPUIS Assessment_scores OÙ fk_assigned_uid = '1000002' UNION TOUS SÉLECTIONNER scores_uid , score2 DEPUIS Assessment_scores OÙ fk_assigned_uid = '1000002' UNION TOUS SÉLECTIONNER scores_uid , score3 DEPUIS Assessment_scores OÙ fk_assigned_uid = '1000002';</pre> <p><br /></p>
P粉336536706P粉336536706606 Il y a quelques jours456

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

  • P粉908643611

    P粉9086436112023-07-28 17:42:24

    Idéalement, vous devriez avoir une structure comme celle-ci :

    students

    • id
    • name

    tests

    • id
    • number

    test_results

    • id
    • student_id
    • test_id
    • result

    De cette façon, vous pouvez obtenir tous les résultats des étudiants en une seule requête.

    SELECT test_results.result AS Result,
     students.name as Student,
     tests.number as Testnumber 
    FROM test_results 
    LEFT JOIN students ON students.id = test_results.student_id
    LEFT JOIN tests ON tests.id = test_results.test_id
    WHERE student_id = {{id}}

    répondre
    0
  • Annulerrépondre