Requête PHP SQL pour séparer plusieurs colonnes (dans la même ligne) en lignes distinctes
P粉336536706
P粉336536706 2023-07-27 18:07:59
0
1
405
<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粉336536706
P粉336536706

répondre à tous(1)
P粉908643611

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}}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal