Veröffentlicht 27. Mai 201312 j 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.
27. Mai 201312 j 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 201312 j von uenetz
27. Mai 201312 j 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.
27. Mai 201312 j vorschlag zu dem "einfacher"? ) Ein Forum ist kein Lösungskatalog;) Vor der Inspiration, steht die Transpiration ... sonst lernt man nichts *zwinker
27. Mai 201312 j Autor 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.
27. Mai 201312 j Ein anderer Lösungsvorschlag: UPDATE Mitarbeiter SET Gehalt = (Gehalt*1.1) WHERE Mitarbeiter.[Gehalt] < (SELECT Avg(Gehalt) FROM Mitarbeiter);
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.