Alice: SQL Anweisungen - mehrere

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

  1. 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 Person
    SET Address = 'Stien 12', City = 'Stavanger', Name = 'Karl Heinz', ...
    WHERE Name = 'Rasmussen' AND City = 'Rio' OR City = 'Köln'

    1. 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...

      1. 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

    2. Kannst du mir mal dein Statement erklären ?

      Irgendwie steig ich da nicht ganz durch.

      Alice

      1. 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?

        1. 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?

          1. *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

            1. 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...
              ;)

              1. 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

                1. 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

            2. 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

              1. 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

  2. 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...

    1. Aha.

      Dann wären Transaktionen was für Dich, vgl. Doku...

      Also könnte ich mit Transaktionen sicherstellen, dass alle Statements abgearbeitet werden. oder ?

      1. 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.

  3. 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

    1. 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.

    2. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

      1. 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."

        1. 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

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau