SQL Anweisungen - mehrere
Alice
- datenbank
0 Joe0 King^Lully0 Joe
0 Alice
0 King^Lully0 Alice
0 Ilja0 King^Lully0 Tom0 King^Lully0 Tom
Hi an alle.
Also ich habe folgende Problematik:
DBMS: Oracle 10g XE
Ich möchte nach einem "Insert" in eine bestimmte Tabelle mehrere "Update"-SQL Statements anwenden.
Zum Beispiel:
Update table
set verein = 'ABC'
Where
Leiter = 'Norbert';
Update table
set verein = 'Halle'
Where
Leiter = 'Alice' or Leiter ='Karl' or Leiter='Hans';
Update ......
Ich habe ca. 15 solcher Statements und nun wollte ich Fragen, ob es die möglichkeit gäbe, alle diese in ein einziges SQl zu packen bzw. in irgend etwas anderes (Trigger, ...)
Ich danke euch schonmal im voraus.
Alice
Hi an alle.
Also ich habe folgende Problematik:
DBMS: Oracle 10g XEIch möchte nach einem "Insert" in eine bestimmte Tabelle mehrere "Update"-SQL Statements anwenden.
Zum Beispiel:
Update table
set verein = 'ABC'
Where
Leiter = 'Norbert';Update table
set verein = 'Halle'
Where
Leiter = 'Alice' or Leiter ='Karl' or Leiter='Hans';
UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger', Name = 'Karl Heinz', ...
WHERE Name = 'Rasmussen' AND City = 'Rio' OR City = 'Köln'
Zum Beispiel:
Update table
set verein = 'ABC'
Where
Leiter = 'Norbert';Update table
set verein = 'Halle'
Where
Leiter = 'Alice' or Leiter ='Karl' or Leiter='Hans';UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger', Name = 'Karl Heinz', ...
WHERE Name = 'Rasmussen' AND City = 'Rio' OR City = 'Köln'
Dein Gegenbeispiel bezieht sich nicht auf das Erstbeispiel. Vgl. unterschiedliche SET-Klausel und WHERE-Klausel. Da ist nichts zusammenzufassen...
Dein Gegenbeispiel bezieht sich nicht auf das Erstbeispiel. Vgl. unterschiedliche SET-Klausel und WHERE-Klausel. Da ist nichts zusammenzufassen...
Darum gehst hier nicht. Es geht nur darum wie eine Tabelle komplett upgedated werden kann in einem SQL Statement. Ist alles nur beispielhaft und kann mit ein wenig Hirn auf die eigenen Bedürfnisse angepasst werden
Kannst du mir mal dein Statement erklären ?
Irgendwie steig ich da nicht ganz durch.
Alice
Kannst du mir mal dein Statement erklären ?
Also: Du möchtest doch 15 Werte einer Tabelle ändern. Und das mit einer Anweisung
Update Table
Soweit so grün.
Nun möchtest du die Werte Ändern, also:
Set Wert1 = '', Set Wert2 = '', Set Wert3 = '' ... Set Wert15 = ''
Und das ganze willst du auch begrenzen
Where Wert1 = '' AND Wert2 = '' OR Wert2 = '' ...
Vielleicht habe ich auch was mißverstanden. Oder liegt dein Problem woanders?
Das Problem ist ja, dass dies ein Update mit einer Where Klausel ist,
aber ich möchte ja zum Beispiel den Verein auf 'ABC' setzen WENN Leiter gleich 'Klaus' , dann Verein auf "Halle" Wenn Leiter gleich "Alice" or "Test" ....
Also mehrere unterscheidliche Where Klauseln ; )
Vielleicht habe ich auch was mißverstanden. Oder liegt dein Problem woanders?
*heul* *heul*
Warum kann mir denn niemand genau sagen, wie ich mehrere SQL Statements automatisch nacheinander abrarbeiten lassen kann ?
Ich würde mich über konkrete Tipps sehr freuen ; )
THX
Alice
Warum kann mir denn niemand genau sagen, wie ich mehrere SQL Statements automatisch nacheinander abrarbeiten lassen kann ?
Ich würde mich über konkrete Tipps sehr freuen ; )
Dann verrate doch mal den kleinen Mäuschen was Du wirklich willst. Jetzt liest sich die Sache so, als ob Du es nicht gebacken bekommst irgendein Statement abzusetzen.
Und wenn Du es doch gebacken bekommen hast, so stellt sich gleich die Folgefrage warums beim ersten klappt und beim zweiten nicht oder warum Du nicht alles in eine Datei packst und versendest. Und wie beauftragst Du überhaupt den Datenserver?
Fragen über Fragen, zum grau werden...
;)
Also ich habe eine Tabelle in einer Oracle 10g XE Datenbank und arbeite mit APEX (HTMLDB).
Nun möchte ich nicht jeden SQL Befehl einzeln absetzten, sondern alle zusammen ausführen lassen (nacheinander).
THX
Also ich habe eine Tabelle in einer Oracle 10g XE Datenbank und arbeite mit APEX (HTMLDB).
Falls Dir hier keiner helfen kann und die Doku, äh, nicht ausreicht:
http://www.google.de/search?hl=de&q=+APEX+(HTMLDB)+Forum&meta=
http://forums.oracle.com/forums/forum.jspa?forumID=137
http://en.wikipedia.org/wiki/Oracle_Application_Express
yo,
*heul* *heul*
<taschentuch reicht>
Warum kann mir denn niemand genau sagen, wie ich mehrere SQL Statements automatisch nacheinander abrarbeiten lassen kann ?
vielleicht solltest du dir meinen hinweis weiter oben noch mal genauer zu gemüte führen. dort ist wohl die lösung für dein problem enthalten.
und wenn es nur darum geht, die anweisung nacheinander auszuführen, dann kannst du sie in einer datei speichern und über sqlplus aufrufen.
Ilja
vielleicht solltest du dir meinen hinweis weiter oben noch mal genauer zu gemüte führen. dort ist wohl die lösung für dein problem enthalten.
Eher nicht, Du verfolgst den Thread wohl nur halbherzig. ;)
und wenn es nur darum geht, die anweisung nacheinander auszuführen, dann kannst du sie in einer datei speichern und über sqlplus aufrufen.
Genutzt wird aber APEX - https://forum.selfhtml.org/?t=148197&m=961563
Ich habe ca. 15 solcher Statements und nun wollte ich Fragen, ob es die möglichkeit gäbe, alle diese in ein einziges SQl zu packen bzw. in irgend etwas anderes (Trigger, ...)
Es sind nun mal verschiedene Aufgaben, die der Datenserver erledigen soll. Verschiedene Aufgaben werden normalerweise als verschiedene Statements bearbeitet.
Vielleicht willst Du etwas anderes? Willst Du vielleicht, dass sichergestellt ist, dass alles abgearbeitet wird oder gar nichts? Also, dass Teilausführungen aufgrund "ungünstiger Randbedingungen" unterbleiben? ;)
Dann wären Transaktionen was für Dich, vgl. Doku...
Aha.
Dann wären Transaktionen was für Dich, vgl. Doku...
Also könnte ich mit Transaktionen sicherstellen, dass alle Statements abgearbeitet werden. oder ?
Dann wären Transaktionen was für Dich, vgl. Doku...
Also könnte ich mit Transaktionen sicherstellen, dass alle Statements abgearbeitet werden. oder ?
Nein, Fehler können selbstverständlich weiterhinauftreten, aber Du kannst sicherstellen, dass alles oder nichts ausgeführt wird.
yo,
wenn es sich um die gleiche tabelle handelt, dann sollte das mit der case anweisung in der set klausel gehen, Beispiel für die ersten beiden Updates:
UPDATE tabellen_name
SET verein = CASE
WHEN leiter = 'Norbert'
THEN 'ABC'
WHEN leiter IN ('Alice','Karl','Hans')
THEN 'Halle'
END
WHERE Leiter IN ('Norbert', 'Alice','Karl','Hans')
;
Ilja
UPDATE tabellen_name
SET verein = CASE
WHEN leiter = 'Norbert'
THEN 'ABC'
WHEN leiter IN ('Alice','Karl','Hans')
THEN 'Halle'
END
WHERE Leiter IN ('Norbert', 'Alice','Karl','Hans')
;
Aber nicht empfehlenswert.
Mach das mal mit 15 zusammengefassten "SQLs". ;)
Zudem ist die Redundanz in den WHENs bzw. in der WHERE-Klausel grausig. Dieses Bilden der Vereinigungsmenge... BRRR
Zudem hört bei mehreren "SQLs" bzw. komplexeren WHERE-Klauseln der Spass schnell auf.
Hello,
wenn es sich um die gleiche tabelle handelt, dann sollte das mit der case anweisung in der set klausel gehen, Beispiel für die ersten beiden Updates:
UPDATE tabellen_name
SET verein = CASE
WHEN leiter = 'Norbert'
THEN 'ABC'
WHEN leiter IN ('Alice','Karl','Hans')
THEN 'Halle'
END
WHERE Leiter IN ('Norbert', 'Alice','Karl','Hans')
;
Ab welcher MySQL-Version funktioniert das?
Wenn ich das Online-Handbuch richtig verstehe, erst ab 5.1?
Gibts da was Vergleichbares für die 3er-Version?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Ab welcher MySQL-Version funktioniert das?
Wenn ich das Online-Handbuch richtig verstehe, erst ab 5.1?Gibts da was Vergleichbares für die 3er-Version?
http://dev.mysql.com/doc/refman/4.1/en/control-flow-functions.html
"CASE was added in MySQL 3.23.3."
Hello,
http://dev.mysql.com/doc/refman/4.1/en/control-flow-functions.html
"CASE was added in MySQL 3.23.3."
Danke!
Das hatte ich überlesen.
Bei Update springt das Manual (bei mir) immer auf 5.1 zurück, wenn man bei 3.x bis 4.x sucht
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom