PHP-SQL-Abfrage zum Aufteilen mehrerer Spalten (in derselben Zeile) in separate Zeilen
P粉336536706
2023-07-27 18:07:59
<p>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)? </p>
<pre class="brush:php;toolbar:false;">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';</pre>
<p><br /></p>
理想情况下,你应该有类似这样的结构:
students
id
name
tests
id
number
test_results
id
student_id
test_id
result
这样你就可以在一个查询中获取学生的所有结果。