I mit folgenden Spalten auf drei Tabellen arbeiten:SQL Case-Anweisung zur Verknüpfung von Tabellen
- Studenten (Name TEXT, courseid INTEGER, score INTEGER) zum Beispiel: ('TOM', 6120,85)
- B. (6110, 'Science', 'LSB105')
- gradingscheme (Buchstabe TEXT, unterer REAL, oberer REAL) zum Beispiel: ('A', 90, 100)
Ich versuche, alle drei Tabellen wie tha zu verbinden t Es enthält die für jeden Schüler in der Tabelle "Gradingscheme" angegebene Note, abhängig von der Punktzahl aus der Schülerliste. Ich benutze sqlite3 Bibliothek in Python. Ich schrieb die SQL-Anweisung wie folgt:
SELECT s.name, s.courseid, c.name, c.classroom, s.score, CASE g.letter WHEN s.score BETWEEN g.upper AND g.lower
FROM students AS s, courses AS c, gradingscheme AS g
WHERE s.courseid=c.courseid
Allerdings bekomme ich einen Fehler. Die letzten beiden Zeilen des Fehlers sind wie folgt:
WHERE s.courseid = c.courseid '' ')
sqlite3.OperationalError: in der Nähe von "FROM": Syntaxfehler
Bitte helfen
bearbeitet Code:
SELECT s.name, s.courseid, c.name, c.classroom, s.score, g.letter
FROM students AS s
INNER JOIN courses AS c
ON s.courseid=c.courseid
INNER JOIN gradingscheme AS g
ON CASE g.letter WHEN s.score BETWEEN g.lower AND g.upper
Jetzt erhalte ich die Fehlermeldung:
EIN FALL g.letter WENN s.score zwischen unteren und oberen ‚‘ ') sqlite3.OperationalError: in der Nähe von ‚oben‘: Syntaxfehler
Möglicherweise kann ich nicht herausfinden, wie CASE-Anweisung zu verwenden, bedingt zu tun Beitritt
Lernen Sie, die richtige explizite 'JOIN'-Syntax zu verwenden. Einfache Regel: * Niemals * Kommas in der FROM-Klausel verwenden. –
Danke Gordon. Ich habe den Code geändert und jetzt Inner Join verwendet. Ich bekomme jedoch den Fehler, wie in der oben stehenden bearbeiteten Frage gezeigt. Ich bin möglicherweise nicht in der Lage, herauszufinden, wie man die Case-Anweisung hier verwendet. – Usman