Ergebnis 1 bis 5 von 5

Thema: brauche dringend Hilfe...SQL-Anfänger

  1. #1
    maaaaac ist offline Neuer Benutzer
    Registriert seit
    28.09.2011
    Beiträge
    2

    Standard brauche dringend Hilfe...SQL-Anfänger

    Hallo Leute, ich brauche drigend eure Hilfe. Bin neu in SQL unterwegs, seid daher bitte nicht böse, wenn dies eine blöde Frage ist...

    Folgendes Problem.

    Ich muss eine Tabelle "updaten", also bestimme Daten ändern.
    Die Tabelle heisst "Kontakte", geändert werden soll das Feld "anlass" in 208 (numerisch), wenn das Feld kontakte.aktivitaet 1,2,4,6,11,21,31 beinhaltet. wenn nicht, sollen die Werte in kontakte.anlass so bleiben wie sie sind. Gleichzeitig soll, wenn kontakte.anlass geändert wird, der ursprüngliche Wert in Kontakte.Notizen angehangen werden (dort können u.U. schon Werte enthalten sein. Allerdings soll nicht der Zahlenwert aus Kontakte.anlass, sondern der "gedolmetschte" Wert aus anlaesse.name angehängt werden. Die Tabelle anlaesse bestet aus anlaesse.nr (identisch mit kontakte.anlass) und anlaesse.name (quasi die Bezeichnung im Klartext).

    Kann ih dies in einem Statement durchführen, oder müssen zwei erfolgen (Erst anhängen im kontakte.notiz und dann Umstellung von kotakte.anlaesse)? Und wie müssen die Statements aussehen?

    Könnt Ihr mir helfen???

    Danke und Gruß
    maaaaac

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von maaaaac Beitrag anzeigen
    Hallo Leute, ich brauche drigend eure Hilfe. Bin neu in SQL unterwegs, seid daher bitte nicht böse, wenn dies eine blöde Frage ist...

    Folgendes Problem.

    Ich muss eine Tabelle "updaten", also bestimme Daten ändern.
    Die Tabelle heisst "Kontakte", geändert werden soll das Feld "anlass" in 208 (numerisch), wenn das Feld kontakte.aktivitaet 1,2,4,6,11,21,31 beinhaltet. wenn nicht, sollen die Werte in kontakte.anlass so bleiben wie sie sind. Gleichzeitig soll, wenn kontakte.anlass geändert wird, der ursprüngliche Wert in Kontakte.Notizen angehangen werden (dort können u.U. schon Werte enthalten sein. Allerdings soll nicht der Zahlenwert aus Kontakte.anlass, sondern der "gedolmetschte" Wert aus anlaesse.name angehängt werden. Die Tabelle anlaesse bestet aus anlaesse.nr (identisch mit kontakte.anlass) und anlaesse.name (quasi die Bezeichnung im Klartext).

    Kann ih dies in einem Statement durchführen, oder müssen zwei erfolgen (Erst anhängen im kontakte.notiz und dann Umstellung von kotakte.anlaesse)? Und wie müssen die Statements aussehen?

    Könnt Ihr mir helfen???

    Danke und Gruß
    maaaaac
    Je nach Version geht das mit einem einzelnen SQL-Befehl. Also, wenn Du 9.1 hast, dann geht das mit einem einzigen Befehl (Stichwort: writeable CTE). Ansonsten brauchst Du mehrere, die Du dann in eine Transaktion bündeln solltest. Um das SQL jetzt zu basteln hab ich aber grad keine Zeit...

    Ach ja: wenn immer die 'alte' Version archiviert werden soll, bietet sich auch ein TRIGGER an, der das übernimmt. Dann erzwingst du das durch die Datenbank selbst, und überläßt es nicht dem 'guten Willen' desjenigen, der das Update durchführt.

    Also, Du hast nun einige Hinweise, ich hoffe, Du kommst weiter ...


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Je nach Version geht das mit einem einzelnen SQL-Befehl. Also, wenn Du 9.1 hast, dann geht das mit einem einzigen Befehl (Stichwort: writeable CTE). Ansonsten brauchst Du mehrere, die Du dann in eine Transaktion bündeln solltest. Um das SQL jetzt zu basteln hab ich aber grad keine Zeit...

    Ach ja: wenn immer die 'alte' Version archiviert werden soll, bietet sich auch ein TRIGGER an, der das übernimmt. Dann erzwingst du das durch die Datenbank selbst, und überläßt es nicht dem 'guten Willen' desjenigen, der das Update durchführt.

    Also, Du hast nun einige Hinweise, ich hoffe, Du kommst weiter ...


    Andreas
    Parse error meinerseits: da ist ja 'nur' eine Tabelle im Update involviert.

    Code:
    test=# select * from anlaesse ;
     nr | name
    ----+-------
      1 | eins
      2 | zwei
      3 | drei
      4 | vier
      5 | fuenf
      6 | sechs
    (6 rows)
    
    test=# select * from kontakte ;
     anlass | aktivitaet | notizen
    --------+------------+---------
          2 |          1 |
          2 |          2 |
          2 |          3 |
          2 |          4 |
          2 |          5 |
    (5 rows)
    
    test=# begin;
    BEGIN
    test=# update kontakte set anlass = 208, notizen = coalesce(notizen,'') || ',' || anlaesse.name from anlaesse where aktivitaet in (1,2,4) and anlaesse.nr=kontakte.anlass;
    UPDATE 3
    test=# select * from kontakte ;
     anlass | aktivitaet | notizen
    --------+------------+---------
          2 |          3 |
          2 |          5 |
        208 |          4 | ,zwei
        208 |          2 | ,zwei
        208 |          1 | ,zwei
    (5 rows)
    sollte das sein, was Du suchst. So in etwa zumindest, oder? Geht auch mit älteren Versionen.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    maaaaac ist offline Neuer Benutzer
    Registriert seit
    28.09.2011
    Beiträge
    2

    Standard

    Hm, funktioniert leider nicht. Bekomme folgende Fehlermeldung:

    08:38:20: Fehlertext: [IBM][CLI Driver][DB2/NT] SQL0104N Auf ": ' || anlaesse.name" folgte das unerwartete Token "from". Zu den möglichen Token gehören: ".". SQLSTATE=42601


    Kannst Du da was mit anfangen?

    Danke und Gruß

    maaaaac

  5. #5
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von maaaaac Beitrag anzeigen
    Hm, funktioniert leider nicht. Bekomme folgende Fehlermeldung:

    08:38:20: Fehlertext: [IBM][CLI Driver][DB2/NT] SQL0104N Auf ": ' || anlaesse.name" folgte das unerwartete Token "from". Zu den möglichen Token gehören: ".". SQLSTATE=42601


    Kannst Du da was mit anfangen?

    Danke und Gruß

    maaaaac
    Nein, ich kenne DB2 nicht. Ach ja: Du bist damit hier falsch.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Brauche Hilfe bei einer SQL-Abfrage
    Von kilian im Forum Andere Datenbanken
    Antworten: 2
    Letzter Beitrag: 17.09.2010, 13:50
  2. Delete mit Inner Join nicht moeglich? Brauche Hilfe
    Von buliwyf im Forum Andere Datenbanken
    Antworten: 6
    Letzter Beitrag: 05.11.2009, 18:59
  3. Brauche Hilfe (Kein Pc-Crack)
    Von Deerun im Forum Installation von PostgreSQL
    Antworten: 2
    Letzter Beitrag: 17.06.2009, 10:30
  4. Problem Brauche Hilfe
    Von Mr. Long im Forum Installation von PostgreSQL
    Antworten: 29
    Letzter Beitrag: 28.03.2009, 13:56
  5. Brauch dringend Hilfe bei einem DB Problem
    Von mikiii im Forum Programmierung
    Antworten: 1
    Letzter Beitrag: 20.05.2007, 12:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum