Announcement

Collapse
No announcement yet.

Schleife über Schleife

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

  • Schleife über Schleife

    Hallo Experten,

    bisher habe ich nur hier gelesen, doch jetzt bin ich auf ein Problem gestoßen bei dem ich aktive Hilfe benötige.

    Ich habe eine SQL Tabelle in der in einigen (beliebigen) Feldern (keine Keyfelder) NULL Werte stehen.

    Ich möchte nun die Tabelle Record für Record lesen, dann die Felder des Record auf NULL Werte prüfen und diese durch einen default Wert ersetzen.

    Ich hoffe es hat jemand eine Idee wie man das angeht. Meine SQL Kenntnisse reichen dazu leider (noch) nicht aus.

    Viele Dank
    Jaguar

  • #2
    In SQL gibts keine Schleifen. SQL ist per se mengenorientiert. Das geht mit einem einfachen update Befehl

    [highlight=sql]
    UPDATE <TabellenName>
    SET <NameDerSpalteMitNullWerten> = <DefaultWert>
    WHERE <NameDerSpalteMitNullWerten> is null
    [/highlight]

    Die Sachen in spitzen Klammern musst Du durch die jeweiligen in Deinem System ersetzen. Ganz wichtig ist auch dass Du "is null" schreibst und nicht "= null". Mit NULL kann man nicht vergleichen, das wäre immer false. Heisst Du würdest niemals etwas updaten

    Comment


    • #3
      Originally posted by fanderlf View Post
      In SQL gibts keine Schleifen. SQL ist per se mengenorientiert. Das geht mit einem einfachen update Befehl

      [highlight=sql]
      UPDATE <TabellenName>
      SET <NameDerSpalteMitNullWerten> = <DefaultWert>
      WHERE <NameDerSpalteMitNullWerten> is null
      [/highlight]

      Die Sachen in spitzen Klammern musst Du durch die jeweiligen in Deinem System ersetzen. Ganz wichtig ist auch dass Du "is null" schreibst und nicht "= null". Mit NULL kann man nicht vergleichen, das wäre immer false. Heisst Du würdest niemals etwas updaten
      ja ich weis, aber es gibt doch die While Anweisung.

      mein Problem ist das ich nicht weis in welchem Record welche Spalte NULL ist.
      Ich muss die halt erst finden

      Ich habe hier mal ein Beispiel mit einer Test Tabelle angehangen.
      (Die Originale hat über 70 Spalten und einige 1000 records)
      Attached Files

      Comment


      • #4
        Nein in SQL gibt es kein while. Das Statement was oben steht findet automatisch alle Zeilen die NULL sind und setzt den Wert auf einen Standardwert.

        Beispiel:

        [highlight=sql]
        UPDATE Mitarbeiter
        SET Firma = 'MeineFirma'
        WHERE Firma is null
        [/highlight]

        Dieses Kommando setzt für alle Mitarbeiter die noch keine Firma eingetragen haben (Firma is null) den Wert der Spalte Firma auf 'MeineFirma'.
        Vielleicht magst Du mal ein SQL Tutorial machen, damit Du besser verstehst wie SQL funktioniert. SQL ist keine prozedurale Sprache wie z.B. Java oder C, sondern eine deklarative. Man schreibt nur hin was man tun will, nicht aber wie es die Datenbank umsetzt.

        Hier gibts z.B. ein SQL Tutorial. Wenn Dir das nicht zusagt findet man bei google bestimmt auch noch andere

        Comment


        • #5
          Vielen Dank erstmal,
          ich werde das mal versuchen.
          Wie gesagt, sind meine ersten Gehversuche

          schönen Gruss
          Jaguar

          Comment


          • #6
            Danke passt erstmal

            Comment


            • #7
              Originally posted by fanderlf View Post
              Nein in SQL gibt es kein while.
              Doch "While" gibt es u.a. in mySQL und TSQL.
              Bei Oracle wird "FOR und "LOOP" verwendet.

              @Jaguar
              Es muss nicht für jede Spalte ein separates Update durchgeführt werden.

              PHP Code:
                Update Mitarbeiter
                  SET auftragsnr 
              ISNULL(auftragsnr0)
                     ,
              crane      ISNULL(crane123
              Und Falk Prüfer sprach: Formatierung von SQL in Beiträgen

              Comment


              • #8
                Wenn er schon 3 Zeilen simples UPDATE net von sich aus hinbekommt würde ich mit prozeduralen DB spezifischen Sprachen (PLSQL heissts übrigens für Oracle ) erst gar nicht anfangen. Mir ist klar dass es sowas gibt, allerdings würde er dort auch nicht weit kommen, wenn er nicht mal die Grundbegriffe von SQL versteht.

                Comment

                Working...
                X