Chirin Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 Hallo, habe wieder einmal ein Problem. Heute ists die Frage, ob bzw. wie man die SQL-Anweisung schreibt, dass Werte unter Mittelwert aktualisiert werden können. Erster Ansatz war: UPDATE Mitarbeiter SET Gehalt = Gehalt*1.1 WHERE (Select Gehalt FROM Mitarbeiter Group BY Gehalt Having Gehalt < AVG(Gehalt)); Klappen tuts nicht, aber ich hoffe der Ansatz ist nicht zu weit her geholt. Würd mich über ne Lösung freuen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 (bearbeitet) Kleiner Tipp! Debugge doch zuerst einmal den Select in der Where-Klausel. Wenn da das gewünschte Resultat erscheint, dann mach Dich an das Update Bemerkung: die Where-Klausel kann man viel einfacher gestalten. Bearbeitet 27. Mai 2013 von uenetz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Chirin Geschrieben 27. Mai 2013 Autor Teilen Geschrieben 27. Mai 2013 vorschlag zu dem "einfacher"? ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
prauc Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 das kann so letztendlich nicht funktionieren.. das WHERE hat nichts worauf es prüfen soll. Du solltest dir im Subselect am besten die MitarbeiterIds ziehen, deren Gehalt unter dem Mittelwert liegt und das WHERE aufbauen nach: WHERE mitarbeiterId IN ([sUBSELECT]) ich würde aber schauen, ob sich das Query nicht auch ohne Subselect realisieren lässt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 vorschlag zu dem "einfacher"? ) Ein Forum ist kein Lösungskatalog;) Vor der Inspiration, steht die Transpiration ... sonst lernt man nichts *zwinker Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Chirin Geschrieben 27. Mai 2013 Autor Teilen Geschrieben 27. Mai 2013 ach wie is das manchmal fummelig. Lösung sieht nun wie folgt aus und funktioniert: UPDATE Mitarbeiter SET Gehalt = (Gehalt*1.1) WHERE (((Mitarbeiter.[Gehalt])<(SELECT Avg(Gehalt) AS DurchschnGehalt FROM Mitarbeiter))); Durch die Bedingung des Durchschnittsgehalts wars mir jetzt nich möglich, das Subselect weg zulassen. Zumindest würd ich jetzt nix finden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 27. Mai 2013 Teilen Geschrieben 27. Mai 2013 Ein anderer Lösungsvorschlag: UPDATE Mitarbeiter SET Gehalt = (Gehalt*1.1) WHERE Mitarbeiter.[Gehalt] < (SELECT Avg(Gehalt) FROM Mitarbeiter); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.