Ich habe eine Tabelle, in der die Testergebnisse der Schüler aufgeführt sind. Jede Zeile enthält eine Studenten-ID und es gibt Spalten, wobei jede Spalte ein individuelles Testergebnis darstellt. Jetzt muss ich eine Abfrage erstellen, die es mir ermöglicht, eine separate Zeile für den Studentenausweis zu sehen, der jedem Testergebnis entspricht. Ich habe Stack Overflow nach dem besten Ansatz durchsucht, aber keinen gefunden, der effizient aussieht. Ich habe den unten aufgeführten Code für einen Schüler (1000002) geschrieben, aber er scheint für das, was ich erreichen möchte, zu komplex zu sein und funktioniert nur für drei Testergebnisse, sodass ich mehr Code hinzufügen muss, um alle 16 Punkte zu erhalten. Gibt es eine einfache Möglichkeit, dies mit einer einzelnen Abfrage zu tun (bevorzugt) oder muss ich die Zeilen extrahieren und dann eine Schleife verwenden, um aus jedem Element ein Array zu erstellen (zweite bevorzugt)?
SELECT scores_uid , Punktzahl1 AUS Assessment_scores WHERE fk_assigned_uid = '1000002' UNION ALLE WÄHLEN scores_uid , Punktzahl2 AUS Assessment_scores WHERE fk_assigned_uid = '1000002' UNION ALLE WÄHLEN scores_uid , Punktzahl3 AUS Assessment_scores WHERE fk_assigned_uid = '1000002';
理想情况下,你应该有类似这样的结构:
students
id
name
tests
id
number
test_results
id
student_id
test_id
result
这样你就可以在一个查询中获取学生的所有结果。