The error is “The query must be based on at least one table or query”.
The query:
x
INSERT INTO Gehaltsabrechnung (IBAN, MitarbeiterID, Betrag) VALUES (
(SELECT IBAN FROM Mitarbeiter WHERE MitarbeiterID = 2), 2,
(SELECT SUM(Stunden_Gearbeitet * Stundenlohn) FROM
(mitarbeiterrollen INNER JOIN ROLLE ON mitarbeiterrollen.RolleID = rolle.RolleID)
WHERE MitarbeiterID = 2)
)
Advertisement
Answer
You want INSERT . . . SELECT
. In MS Access, this would look like:
INSERT INTO Gehaltsabrechnung (IBAN, MitarbeiterID, Betrag)
SELECT m.IBAN, m.MitarbeiterID,
(SELECT SUM(Stunden_Gearbeitet * Stundenlohn)
FROM mitarbeiterrollen INNER JOIN
ROLLE
ON mitarbeiterrollen.RolleID = rolle.RolleID
WHERE MitarbeiterID = m.MitarbeiterID
)
FROM Mitarbeiter as m
WHERE m.MitarbeiterID = 2;
Notice that I replaced most of the 2
s with references to m.MitarbeiterID
. This helps ensure that typos won’t affect the query.
I would also recommend using qualified column names in the subquery, but this version should work.