Peter: SQL Statement

Hallo,

folgendes Problem, ich habe eine Datenbank mit dem feld HS, dieses Feld ist bei einigen Datensätzen NULL und bei anderne steht etwas drin, ich möchte nun die ersten x Datensätze ändern, bei denen noch nichts in HS steht, aber nur die ersten 4 z.B.
Sprich such mir di ersten x Datensätze wo nix drinsteht in HS und update diese Datensätze...
so ich hoffe das war halbwegs verständlich :-)
Danke und Gute nacht
 Peter

  1. Hi,

    so ich hoffe das war halbwegs verständlich :-)

    ja, mit ein wenig Interpretation. Aber was ist Dein Problem?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Sprich such mir di ersten x Datensätze wo nix drinsteht in HS und update diese Datensätze...

    Hi,

    mann nehme http://dev.mysql.com/doc/mysql/en/UPDATE.html, beachte besonders die Einsatzmöglichkeiten der LIMIT-Klausel und denke darüber nach, welch vorteilhafte Eigenschaften die Funktion ISNULL() (http://dev.mysql.com/doc/mysql/en/Comparison_Operators.html) für die Lösung Deines Problem in der WHERE-Klausel des zu formulierenden Statement haben könnte - voilà! Natürlich berücksichtige man dabei, daß Deine Formulierung "die ersten x Datensätze" nicht mit einer eventuellen Reihenfolge der DS in der Tabelle zu tun hat; dafür haben wir im UPDATE die ORDER-BY-Klausel.

    hth Robert

    1. Hi!

      Sorry, sehe gerade in einer Antwort weiter oben, daß Du Dein DBMS gar nicht genannt hast - ich nahm automatisch MySQL an. Bei Access solltest Du mal nach der TOP-Klausel sehen, um die Anzahl der zurückgegebenen DS einzuschränken.

      hth Robert

  3. yo,

    folgendes Problem, ich habe eine Datenbank mit dem feld HS, dieses Feld ist bei einigen Datensätzen NULL und bei anderne steht etwas drin, ich möchte nun die ersten x Datensätze ändern, bei denen noch nichts in HS steht, aber nur die ersten 4 z.B.

    UPDATE tabelle
    SET spalte_mit_null_werten = 'wert'
    WHERE id_primary_key IN
       (
       SELECT id_primary_key
       FROM tabelle
       WHERE spalte_mit_null_werten IS NULL
       LIMIT 4
       )

    wenn dein dbms noch keine unterabfragen kennt, dann musst du es mit zwei abfragen machen, indem du als erstes die 4 werte des primary keys ermittelts.

    Ilja

    1. yo,

      habe gerade im anderen post gesehen, dass UPDATE LIMIT kennt. dann geht es noch einfacher.

      UPDATE tabelle
      SET spalte_mit_null_werten = 'wert'
      WHERE spalte_mit_nul_werten IS NULL
      LIMIT 4

      Ilja

      1. Vielen Dank für deine Antwort, so in etwas hatte ich mir das auch gedacht und ausprobiert...die Datenbank läuft unter Access und da bekomme ich bei der limit-klausel immer den Fehler "fehlender Operator" ...egal wie ich das schreibe, ich kann ich der Hilfe auch nirgendwas entdecken was mir weiterhelfen würde...limit funktioniert auch nicht bei normalen selects in access...

        yo,

        UPDATE tabelle
        SET spalte_mit_null_werten = 'wert'
        WHERE spalte_mit_nul_werten IS NULL
        LIMIT 4

        Ilja

        1. Hallo Peter,

          vielleicht hilft das weiter:
          http://forums.devshed.com/t63156/s.html
          Gruß Mia

    2. tach

      aber nur die ersten 4 z.B.

      UPDATE tabelle
      SET spalte_mit_null_werten = 'wert'
      WHERE id_primary_key IN
         (
         SELECT id_primary_key
         FROM tabelle
         WHERE spalte_mit_null_werten IS NULL
         LIMIT 4
         )

      Nur zu Info,
      bleibt anzumerken das mit dieser Lösung nicht in allen DBs das gewünschte Ergebnis erzielt wird, da z.B. bei oracle der Zeiger in DB auf einem beliebigen und nicht auf erstem Datensatz stehen kann.

      mfg

      Das Schmunzelmonster

      1. yo,

        bleibt anzumerken das mit dieser Lösung nicht in allen DBs das gewünschte Ergebnis erzielt wird, da z.B. bei oracle der Zeiger in DB auf einem beliebigen und nicht auf erstem Datensatz stehen kann.

        nur so zur info, oracle kennt die LIMIT klausel gar nicht und würde somit eine fehlermeldung ausgeben. wir haben einfach mal stillschweigend angenommen, er benutzt mysql und lagen damit auch gleich falsch. aber mit oracle hatte diese lösung nichts zu tun.

        mal davon abgesehen, ist beliebig ein vollkommendes ausreichendes kriterium, da alle seine bedingungen erfüllt sind, sprich NULL werte. es waren nur von vier die rede, nicht aber die ersten oder letzten vier....

        Ilja