El error es "La consulta debe basarse en al menos una tabla o consulta".

La consulta:

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)
)

Nuestra mesa "Gehaltsabrechnung"

1
Tobi0812 7 feb. 2020 a las 17:24

2 respuestas

La mejor respuesta

Quieres INSERT . . . SELECT. En MS Access, esto se vería así:

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;

Tenga en cuenta que reemplacé la mayoría de los 2 s con referencias a m.MitarbeiterID. Esto ayuda a garantizar que los errores tipográficos no afecten la consulta.

También recomendaría usar nombres de columna calificados en la subconsulta, pero esta versión debería funcionar.

1
Gordon Linoff 7 feb. 2020 a las 14:40

Nuestra tabla "MitarbeiterRollen": https://i.stack.imgur.com/7pDct.png

Nuestra tabla "Gehaltsabrechnung" https://i.stack.imgur.com/dUKWd.png

Nuestra tabla "Rolle": https://i.stack.imgur.com/bhmYn.png

Nuestra tabla "Mitarbeiter": https://i.stack.imgur.com/yniNv.png

0
Tobi0812 7 feb. 2020 a las 14:46