SQL, Wie verbinde ich eine Aktualisierungsabfrage mit einer Bedingung?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Meinst du sowas

UPDATE Pferd

SET Pferd.Kosten = Pferd.Kosten1.3

INNER JOIN Reitart

ON Reiter.ReitartNr = Reitart.ReitartNR

WHERE Reitart.Reitart = 'welche Art';

Fehlt da nicht noch ein Multiplikationszeichen?

RIDDICC  13.06.2018, 13:12

wie kriegst du so die Verbindung zwischen ReiterNr und Reiter hin? kicher

1
Kiboman  13.06.2018, 13:15
@RIDDICC

In der ON Klausel?

Oder hab ich ausnahmsweise Kopf jetzt ein Fehler gemacht?

Für nich sieht es richtig aus

1
felix9941 
Fragesteller
 13.06.2018, 13:18
@Kiboman

@Kiboman ja das Multiplikationszeichen fehlt. Fehlt da nicht Reiter.ReiterNr = Pferd.ReiterNr?

0
RIDDICC  13.06.2018, 14:39
@Kiboman

ich meinte Pferd.ReiterNr und Reiter.ReiterNr...

0
felix9941 
Fragesteller
 13.06.2018, 13:16

Fehlt da nicht Reiter.ReiterNr = Pferd.ReiterNr? Es wird Syntaxfehler(fehlender Operator) angezeigt

0
Kiboman  13.06.2018, 13:17
@felix9941

Achso natürlich bin Grade im Mittagspausen Modus Gehirn zu langsam xD

Warte

1
Kiboman  13.06.2018, 13:20
@felix9941

Kannst du die Tabellen Mal in SQLfiddle hauen und die Link teilen, am Handy ist das zu aufwendig

0
felix9941 
Fragesteller
 13.06.2018, 13:26
@Kiboman

Könntest du mir kurz erklären wie ich das mache? Danke

0
Kiboman  13.06.2018, 13:29
@felix9941

Mir ist Grade was andere aufgefallen.

Du willst die Kosten für eine reitart erhöhen.

Aber Reiter und pferd ist eine 1:n Beziehung.

Die Art ist Aber eine n:1 Beziehung zwischen Reiter und Reit Art.

Wen du die Kosten bei pferd erhöhst dann für alle reiter die ein pferd haben das auf reitart x laufen, unabhängig davon was sie tatsächlich haben.

Oder ist das so gewollt?

Wenn du tatsächlich nur die Kosten für reitart x aber nicht für y erhöhen willst brauchst du einen anderen Ansatz das zu lösen

1
felix9941 
Fragesteller
 13.06.2018, 14:29
@Kiboman

funktioniert leider nicht kann aber auch sein, dass ich zu blöd dafür bin. Trotzdem vielen Dank für die ganze Mühe!!!

0
Kiboman  13.06.2018, 15:01
@felix9941

Wenn du willst helfe ich dir heute abend noch mal in Ruhe über Teamspeak oder was auch immer

Dass Updates Statement muss man umformulieren das kann ich aber am Handy nicht testen

1
felix9941 
Fragesteller
 13.06.2018, 16:38
@Kiboman

Habs jetzt aber ein bisschen umgeändert! Vielen Dank nochmal!

0

so ungefähr: https://stackoverflow.com/questions/2334712/how-do-i-update-from-a-select-in-sql-server

sieht wild aus... mit ner temporären Tabelle, die diese ganzen Referenzen auflöst...

oder mit embeddedSQL und C... das erscheint einfacher... kann aber eigentlich noch wilder sein...

oder man nimmt was ganz anderes an Stelle von SQL: Datalog z. B....

wotan38  14.06.2018, 21:00

Embedded SQL ist auch kein anderes SQL, wird nur vom Programm aus aufgerufen und das Ergebnis ans Programm zurückgeschickt.

0
RIDDICC  14.06.2018, 22:37
@wotan38

ach so... LOL

kommt man durch eSQL vllt ohne temporäre Tabellen aus?

0

update Pfrerd set Kosten = neue Kosten where ReiterNr in

(select ReiterNr from Reiter where ReitartNr in

(select ReitartNr from Reitart where Reitart = bestimmte Reitart))

wotan38  14.06.2018, 21:10

Ergänzend dazu: Für neue Kosten habe ich hier aus Versehen eine Konstante vorgesehen. Bei einer variablen Erhöhung kann man natürlich auch eine Formel einsetzen:

set Kosten = Kosten * 1,30

1