Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Datenbanken (http://www.informatikerboard.de/board/board.php?boardid=19)
----- Problem mit meiner Lösung (http://www.informatikerboard.de/board/thread.php?threadid=4441)


Geschrieben von Based am 29.10.2022 um 16:07:

  Problem mit meiner Lösung

Meine Frage:

Hallo zusammen,

Ich habe zurzeit Datenbanken als Thema in der Schule und habe ein Problem mit meinem Code und oder meinem Programm um eine Aufgabe zu Lösung. Ich wollte wissen ob mein Lösungsansatz Sinn ergibt.
Folgende Tabellen: Trainingsplan(TPID, ^ZID, ^TID) Trainingseinheit(TEID, Tag, Sollzeit, SollDistanz, ^TPID) Trainer(TID, Vorname, Nachname, Grundpreis) Ziel(ZID, Bezeichnung, Faktor)

Aufgabe Grundpreis von allen Trainer um 5% reduzieren.



Meine Ideen:
Mein Lösungsansatz: UPDATE Trainer SET Grundpreis = Grundpreis * 0.95 FROM Trainer JOIN Trainingsplan JOIN Trainingseinheit on Trainer.TID = Trainingsplan.TID AND Trainingsplan.TPID = Trainingseinheit.TPID



Geschrieben von as_string am 03.11.2022 um 15:24:

 

Die Datenbank würde aber nur erlauben, dass in ein Trainingsplan zu nur einem Trainer gehört. Könnten in einem Trainingsplan nicht auch verschiedene Trainer eine Trainingseinheit haben?

Zu Deiner Abfrage: Warum die ganzen Joins? Du musst doch nur was an der Trainer-Tabelle ändern und brauchst dazu auch keine Informationen aus anderen Tabellen. Dann reicht es, wenn Du
UPDATE Trainer SET Grundpreis = Grundpreis * .95
schreibst. Ein Update hat auch keine FROM clause. Das was ein SELECT hinter dem FROM hat, kommt beim UPDATE gleich direkt nach dem UPDATE.

Gruß
Marco

Edit: Hab gerade gelesen, Du kannst sehr wohl eine FROM-Clause im UPDATE haben und dort auch JOINs verwenden. Aber das brauchst Du hier ja nicht, das wäre nur interessant, wenn nicht alle Trainer die Grundpreis-Änderung bekommen sollen, abhängig von Daten in anderen Tabellen. Das ist hier ja aber nicht der Fall.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH