2009-07-07 7 views
1

Ich habe zwei Tabellen:Ich brauche auf Befehl INSERT helfen, zwei Tabellen

THEMEN IDsubjects Benutzername Thema

GRADE IDgrades IDsubject Grad

Wo SUBJECTS.IDsubjects und GRADE. IDsubject wird verbunden und bildet eine relationale Datenbank. Ich möchte eine Note basierend auf dem Thema eines Benutzers einfügen, aber ich weiß nicht, wie das geht.

Ich habe drei Werte: - username - Thema - Klasse

ich eine Klasse in GRADE Tabelle zu einem Thema basiert einfügen wollen, weil es viele Themen sein wird, und ich möchte eine bestimmte Klasse angewendet werden zu einem bestimmten Thema.

+0

Ich liebe den neuen Tag :) –

+1

Dies ist nicht Hausaufgaben. –

Antwort

1
INSERT INTO GRADES (IDSUBJECT, GRADE) 
    (
    (SELECT SubjID 
    FROM SUBJECTS 
    WHERE USERNAME = [username] 
    AND SUBJECT = [subject]), 
    [grade] 
) 

Wohlgemerkt, gibt es einen Grund, warum Sie nicht die Betreff-ID haben, sondern nur den Betreff-Namen? Möchtest du wirklich, dass der Benutzername ein Feld in der Subjekttabelle und nicht die Tabelle mit den Noten ist?

+1

+1 für "Möchten Sie wirklich, dass der Benutzername ein Feld in der Subjekttabelle und nicht die Noten-Tabelle ist?" – defines

+0

Danke schön :) Ich denke - wie, natürlich, Sie tun auch -, dass es mehr Sinn macht, den Benutzer als ein Feld in der Tabelle Grades zu haben, weil die Note spezifisch für die Kombination von Benutzer und Thema ist. Wie das Tischdesign klingt, klingt es so, als ob die Einrichtung für jeden Schüler ein einzigartiges Thema bietet. – DavidMWilliams

+0

Vielen Dank, aber ich bekomme immer "Syntaxfehler in INSERT INTO-Anweisung". Ich bin mir nicht sicher, wo das Feld Benutzername sein sollte. –

1

Ich nehme an, dass Ihr GRADES.IDgrades ein auto_increment-Schlüssel ist und automatisch generiert wird. Auch in der SELECT Aussage der Wert 'A' ist, wo Sie Ihren tatsächlichen Gradwert setzen. Es wird nicht tatsächlich aus der SUBJECTS-Tabelle ausgewählt, sondern lediglich der angegebene explizite Wert ausgewählt. Ich habe auch 'Mathe' und 'Billy' als Ihre Werte für Note und Thema verwendet.

INSERT into GRADES (IDsubject, grade) 
    SELECT IDsubjects, 'A' 
    FROM SUBJECTS 
    WHERE username = 'billy' 
     AND subject = 'math' 

Dies fügt eine neue Zeile in GRADES mit dem IDsubject ein, wie in der Tabelle IDsubjects ausgewählt.

+0

Danke. Ich bekomme den gleichen Fehler hier, aber ich werde versuchen, herauszufinden, was los ist. –

1
UPDATE Grades SET grade='F' WHERE subject IN(SELECT subject FROM stackoverflow) 
+1

Danke. Ich bekomme hier keinen Fehler, Abfrage wird ausgeführt, aber nirgendwo werden Werte gespeichert. –

+0

einfügen vs. update? – BIBD

0

Unter der Annahme, dass IDGrades automatisch ID erzeugt wird

INSERT INTO GRADES (IDSubject, GRADE) 
SELECT s.IDsubjects, 
     @GRADE 
FROM SUBJECTS s 
WHERE s.USERNAME = @USERNAME 
    AND s.[SUBJECT] = @SUBJECT 

Sehr seltsam Namenskonvention mit mehreren ID-Spalten (IDSubject s)

+0

Vielen Dank für Ihre Hilfe, aber ich sehe keine Änderungen. Vielleicht funktioniert das nicht in MS Access 2007? –

+0

@ dotnetasp35: ein reales Beispiel SQL geben, wie Sie es – van

+0

INSERT INTO-Typen ausgeführt (IDSubject, Grad) SELECT subjects.IDsubjects, @GRADE VON THEMEN Themen WHERE subjects.USERNAME = 'Demo' und Themen [Betreff]. = 'math' –

Verwandte Themen