SQL-Syntax für Update-Befehl

NBA

Grünschnabel
hi,

ich habe schon viel gesucht, aber leider nichts gefunden.

Ich bräuchte Hilfe bei einer SQL-Syntax:

Ich habe zwei Tabellen:

Tab1:

p_id ;p_name
1;test (ausverkauft)
2;test1
3;:test2

Tab2:

p_id;p_status
1;0
2;0
3;1


Nun möchte in Tab1 "p_name" ändern (p_name + String "Ausverkauft), wenn "p_status" von Tab2 0 ist und "p_name" von Tab1 nicht das Wort "Ausverkauft" enthält.

D.h. der "p_name" in Tab2 mit p_id = 2 soll nach dem Update-Befehl, test1 (ausverkauft) lauten.

Ich habe alles probiert, aber kein Erfolg.

Vielleicht bekomme ich ja Hilfe. Vielen Dank.

mfg
NBA
 
Warum willst du das in der DB machen, ist es nicht besser, wenn das in deiner Anwendung passiert?
Sonst fällt mir nur ein nen View über beide Tabellen zu definieren und dann folgendes auszuprobieren:

UPDATE view1
SET p_name = CONCAT(p_name, "(ausverkauft)")
WHERE NOT(p_name LIKE '%(ausverkauft)') AND p_status = 0

Der View sieht ungefähr so aus:
CREATE VIEW view AS
SELECT tab1.p_id, tab1.p_name, tab2.p_status
FROM tab1, tab2
WHERE tab1.p_id = tab2.p_id

Konnte das nicht testen, weil ich hier keine DB hab, ausserdem hab ich seit ungefähr einem halben Jahr nichts mehr Datenbanksystemen zu tun gehabt.
 
Du hast leider nicht geschrieben, welche DB du verwendest.

Sollte es ein MS SQL Server sein, ist ein Trigger auf die Tabelle, in die Statuswerte stehen, wahrscheinlich am Besten.

Dieser verweist auf die Tabelle, deren Sätze du aktualisieren möchtest.
 
Hy NBA

so sollte es auch funktionieren:
Code:
Update T1
   SET T1.p_name = T1.p_name + ' (ausverkauft)'
  FROM Tab1 T1 INNER JOIN Tab2 T2
                  ON T1.p_id = T2.p_id
 WHERE T2.p_status = 0
   AND T1.p_name LIKE '%(ausverkauft)'

MFG Dragon
 
Zurück