Announcement

Collapse
No announcement yet.

Einfaches Rechnen mit SQL

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

  • Einfaches Rechnen mit SQL

    Hallo zusammen,

    ich will folgendes machen: in meiner Datenbank-Tabelle (mySQL) gibt es eine Spalte "Artikelnummer" (5-stellig, Typ VARCHAR). Ich will nun ein SQL-Statement formulieren, dass für jeden Record in der Tabelle das Feld "Artikelnummer" mit einem Wert belegt, Logik denkbar einfach : wert = wert +x . Ausserdem sollen führende Nullen angezeigt werden.
    Wie mach ich das? Ich bin leider ein absoluter Newbie was SQL anbelangt und für jeden Tipp dankbar.

    LG
    walber2409

  • #2
    Da kommts jetzt noch drauf an ob Du die Nummern lückenlos brauchst (in der Regel eher nicht) und welche DB Du hast. Ausserdem ist ein VARCHAR für eine Zahl in der DB ein denkbar ungünstiger Datentyp. In der Regel verwendet man für laufende Nummern entweder Sequenzen oder autoinkrementelle Felder die das automatisch machen.

    Manuell macht man so etwas überhaupt nicht, weil Du Dich dann drum kümmern müsstest dass nicht mehrere Personen dieselbe Nummer bekommen (ich nehme an es geht um primary key)

    Comment


    • #3
      Die DB ist mysql und an dem Datentyp für das Feld kann ich leider nichts drehen. Nein, das Feld ist kein Primary Keay

      Comment


      • #4
        Also, wenn ich mit : update <Tabelle> set <spaltenname> = "00001" where <spaltenname> = "" dann werden alle unbelegten Felder mit "00001" ausgefüllt. Das klappt schon mal. Mein Problem ist, dass ich eigentlich eine Schleife brauche, wo ich jedesmal den Wert um ein festes Inkrement erhöhe, so dass am Schluss die Spalte mit einer Folge von Werten (zum Beispiel 00001, 00002, 00003 usw) aufgefüllt ist

        Comment


        • #5
          Originally posted by walber2409 View Post
          Also, wenn ich mit : update <Tabelle> set <spaltenname> = "00001" where <spaltenname> = "" dann werden alle unbelegten Felder mit "00001" ausgefüllt. Das klappt schon mal. Mein Problem ist, dass ich eigentlich eine Schleife brauche, wo ich jedesmal den Wert um ein festes Inkrement erhöhe, so dass am Schluss die Spalte mit einer Folge von Werten (zum Beispiel 00001, 00002, 00003 usw) aufgefüllt ist
          Also was Du da schreibst, klingt so als ob Du nachträglich diese Nummern auf einem Artikelbestand vergeben willst. Ist das also eine einmallige Sache oder soll das System weiterleben und nach der Umstellung weiterhin automatisch derartige Nummern produzieren.

          Fortlaufende Nummern zu produzieren geht in MySQL sehr schön mit Variablen:
          [highlight=SQL]
          SELECT @seq := @seq + 1 as IncrSeq, t.*
          FROM mytable t, (SELECT @row := 0) r
          [/highlight]


          Für einen dauerhaften Betrieb würde man in mySQL wohl eine AutoIncrement Spalte nehmen, oder ggF, einen Trigger in komplizierteren Fällen.
          Gruß, defo

          Comment

          Working...
          X