Announcement

Collapse
No announcement yet.

Problem bei Berechnung einer ganzen Spalte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem bei Berechnung einer ganzen Spalte

    Moin Moin zusammen!
    Ich habe ein kleines Problem bei der Neuberechnung einer Spalte. Ich dachte erst, dass wird kein Problem, aber nun komme ich einfach nicht weiter.
    Das Problem sieht wie folgt aus:

    1 Tabelle mit 5 Spalten, davon ist eine die Spalte: "ZEIT"
    Jetzt möchte ich von dieser Spalte, in jeder Zeile -1 abziehen.
    Meine Versuche sahen so aus:

    Code:
    update Daten set ZEIT = (select ZEIT - 1 from Daten)
    Dabei entsteht aber immer ein Fehler.

    Ich hoffe hier kann mir geholfen werden.


    Schönes We

  • #2
    Originally posted by vwBanditwv View Post
    Moin Moin zusammen!
    Ich habe ein kleines Problem bei der Neuberechnung einer Spalte. Ich dachte erst, dass wird kein Problem, aber nun komme ich einfach nicht weiter.
    Das Problem sieht wie folgt aus:

    1 Tabelle mit 5 Spalten, davon ist eine die Spalte: "ZEIT"
    Jetzt möchte ich von dieser Spalte, in jeder Zeile -1 abziehen.
    Meine Versuche sahen so aus:

    Code:
    update Daten set ZEIT = (select ZEIT - 1 from Daten)
    Dabei entsteht aber immer ein Fehler.

    Ich hoffe hier kann mir geholfen werden.


    Schönes We
    Welcher Datentyp ist das? 'ZEIT' suggeriert sowas wie ein INTERVAL oder TIMESTAMP.

    Aber mal so als demo:

    Code:
    test=*# select * from foo;
     zeit
    ------
        1
        2
        3
    (3 rows)
    
    Time: 0,267 ms
    test=*# update foo set zeit = zeit -1;
    UPDATE 3
    Time: 47,873 ms
    test=*# select * from foo;
     zeit
    ------
        0
        1
        2
    (3 rows)
    Andreas

    Comment


    • #3
      Andreas hat eine mögliche (wahrscheinliche) Lösung genannt. Aber ich will auf ein paar weitere Punkte hinweisen:

      Originally posted by vwBanditwv View Post
      Dabei entsteht aber immer ein Fehler.
      Und wir sollen raten, welcher Fehler gemeldet wird?

      Aber dein Code macht deutlich, was falsch läuft:
      Code:
      update Daten set ZEIT = (select ZEIT - 1 from Daten)
      1. Du wilIst einen Wert zuweisen, den du aus einem SELECT holst; aber in der Klammer steht kein geeigneter SELECT-Befehl.
      2. Für die Zuweisung brauchst du in jeder Zeile genau einen Wert. Aber dein SELECT liefert eine Menge von Werten.

      Wenn überhaupt, dann müsstest du in den SELECT zumindest ein passendes WHERE einbauen. Aber der sinnvollste Weg ist der von Andreas (vorausgesetzt, der Datentyp ermöglicht eine einfache Subtraktion). Jürgen

      Comment

      Working...
      X