2 Stimmen

Sybase SQL Dynamic Select (Joins?) Relationale Datenbank

Ich schreibe eine Webseite, die die Noten der Schüler in einem alten Notenbuchformat anzeigt, d.h. sie zeigt den Namen des Schülers an, dann seine Punktzahl für jede Aufgabe (in einer Zeile) und wiederholt dann eine Zeile pro Schüler. Meine Tabellen sind wie folgt aufgebaut (gekürzt auf die notwendigen Informationen):

Tabelle: Zuweisung
* Zuweisung_PK (Primärschlüssel)
* Zuweisung_Name

Tabelle: Studenten
* Student_PK (Primärschlüssel)
* Student_Name

Tabelle: StudentAssignment
* SA_PK (Primärschlüssel
* Schüler_FK (Schüler.Schüler_PK)
* Zuweisung_FK (Zuweisung.Zuweisung_PK)
* Punkte

Ich versuche, eine SELECT-Anweisung zu schreiben, die den Namen und die Punktzahl der Schüler für jede Aufgabe ausgibt. Das Problem, auf das ich stoße, ist, dass ich, wenn ich SELECT Score als Spalte verwende, nur die Punktzahl für eine Aufgabe erhalte, weil ich in meiner WHERE Assignment_FK = Assignment_PK nur eine Punktzahl für eine Spalte auswählen kann.

Ich bin ein ziemlicher Neuling auf dem Gebiet der relationalen Datenbanken und könnte wirklich etwas Hilfe gebrauchen, wie ich dieses Problem am besten angehen kann. Ein Vorschlag war, dass ich eine SELECT-Anweisung schreibe, um alle Schüler in einer Tabelle auszuwählen, dann eine foreach-Zeile in der Tabelle ausführe und die Noten auswähle und sie in die entsprechende Spalte eintrage. Dies scheint ein langsamer und unnötiger Prozess zu sein. Gibt es eine einfachere Möglichkeit, JOINS zu verwenden? Oder kann man ein besseres SELECT schreiben?

1voto

Joe Stefanelli Punkte 128819

Damit sollten Sie die benötigten Daten erhalten. Sie können dann untersuchen, wie Sie die Daten in das gewünschte Anzeigeformat bringen können, das Mai in Ihrer Anwendung einfacher sein als in der Datenbank.

SELECT s.Student_Name, a.Assignment_Name, sa.Score
    FROM Student s
        INNER JOIN StudentAssignment sa
            ON s.Student_PK = sa.Student_FK
        INNER JOIN Assignment a
            ON sa.Assignment_FK = a.Assignment_PK
    ORDER BY s.Student_Name, a.Assignment_Name

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X