Announcement

Collapse
No announcement yet.

einfacher update?

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

  • einfacher update?

    Hallo Leute ich bins mal wieder

    ich versuche eine einfache update anweisung durchzuführen.
    Ich habe eine "company" tabelle und eine "liefer_zahl_bed".
    In beiden tabellen hab ich folgende spalten:

    "kdnr", "lieferbed1"

    nur dass die in der tabelle "liefer_zahl_bed" befüllt sind.

    ich möchte eine einfache update anweisung schreiben, bei der die spalte aus "company" mit der aus "liefer_zahl_bed" befüllt wird. der eindeutige schlüssel ist hier die kdnr.

    hier meine anweisung die nicht richtig funktioniert:

    update company
    set comp_lieferbed1 = a.lieferbed1
    from liefer_zahl_bed a, company b
    where a.kdnr = b.comp_kdnr

    er führt ihn mir aus aber es werden nur 206 zeilen betroffen, es müssen aber alle 906 datensätze betreffen.

    ich bin ein wenig ingres sql geschädigt, bei der die datenbankbefehle anders sind. hier würde der update so lauten:

    update company a
    from liefer_zahl_bed b
    set comp_lieferbed1 = b.lieferbed1
    where a.comp_kdnr = b.kdnr

    ich schnalls einfach nicht was ich falsch mache hab shcon die hilfen von microsoft durchgelesen aber ich seh meinen fehler nicht

    danke euch für die hilfe!

    grietzi

  • #2
    probiere mal:

    update company set comp_lieferbed1 =
    (select lieferbed1 from liefer_zahl_bed where kdnr = comp_kdnr)


    bye,
    Helmut

    Comment


    • #3
      Originally posted by hwoess View Post
      probiere mal:

      update company set comp_lieferbed1 =
      (select lieferbed1 from liefer_zahl_bed where kdnr = comp_kdnr)


      bye,
      Helmut
      der update funktioniert zwar aber er updated immer noch nicht alle ds.

      hab es anders gelöst und schon beim insert auf das befüülen geachtet...trotzdem sehr seltsam.

      genauso ist es bei diesem DELETE befehl:

      ich habe zuerst den SELECT Befehl geschrieben welcher einwandfrei funktioniert:

      select * FROM person a
      WHERE not exists (select * from person b where
      b.pers_salutation != ''
      and a.pers_personId = b.pers_personId)
      and not exists
      (select * from person c where
      c.pers_firstname != ''
      and a.pers_personId = c.pers_personId)
      and not exists
      (select * from person d where
      d.pers_lastname != ''
      and a.pers_personId = d.pers_personId)

      wenn ich jetzt das SELET * weglasse und einfach den delete vorne dran setze spuckt er mir folgende Fehlermeldungen aus:

      Msg 102, Level 15, State 1, Line 1
      Falsche Syntax in der Nähe von 'a'.
      Msg 156, Level 15, State 1, Line 5
      Falsche Syntax in der Nähe des 'and'-Schlüsselwortes.
      Msg 156, Level 15, State 1, Line 9
      Falsche Syntax in der Nähe des 'and'-Schlüsselwortes.

      ich versteh die welt nicht mehr...hat ms eine so gänzlich andere definition von der abfragestruktur gebaut??

      LG omega

      Comment


      • #4
        Originally posted by omega123 View Post
        der update funktioniert zwar aber er updated immer noch nicht alle ds.

        hab es anders gelöst und schon beim insert auf das befüülen geachtet...trotzdem sehr seltsam.

        genauso ist es bei diesem DELETE befehl:

        ich habe zuerst den SELECT Befehl geschrieben welcher einwandfrei funktioniert:

        select * FROM person a
        WHERE not exists (select * from person b where
        b.pers_salutation != ''
        and a.pers_personId = b.pers_personId)
        and not exists
        (select * from person c where
        c.pers_firstname != ''
        and a.pers_personId = c.pers_personId)
        and not exists
        (select * from person d where
        d.pers_lastname != ''
        and a.pers_personId = d.pers_personId)

        wenn ich jetzt das SELET * weglasse und einfach den delete vorne dran setze spuckt er mir folgende Fehlermeldungen aus:

        Msg 102, Level 15, State 1, Line 1
        Falsche Syntax in der Nähe von 'a'.
        Msg 156, Level 15, State 1, Line 5
        Falsche Syntax in der Nähe des 'and'-Schlüsselwortes.
        Msg 156, Level 15, State 1, Line 9
        Falsche Syntax in der Nähe des 'and'-Schlüsselwortes.

        ich versteh die welt nicht mehr...hat ms eine so gänzlich andere definition von der abfragestruktur gebaut??

        LG omega

        habs jetzt ganz anders gemacht:

        delete from person
        where pers_salutation is null
        and pers_firstname is null
        and pers_lastname is null;

        trotzdem verstehe ich die logik nicht....eigtl müsste mssql mir trotzdem den oberen delete ausführen....

        Comment


        • #5
          Originally posted by omega123 View Post
          habs jetzt ganz anders gemacht:

          delete from person
          where pers_salutation is null
          and pers_firstname is null
          and pers_lastname is null;

          trotzdem verstehe ich die logik nicht....eigtl müsste mssql mir trotzdem den oberen delete ausführen....
          wenn man sich mal anschaut was in BOL zu DELETE steht, dann kommt eher auf so was:[HIGHLIGHT="SQL"]DELETE FROM person
          FROM person As A
          WHERE not exists (select * from person b where
          b.pers_salutation != ''
          and a.pers_personId = b.pers_personId)
          and not exists
          (select * from person c where
          c.pers_firstname != ''
          and a.pers_personId = c.pers_personId)
          and not exists
          (select * from person d where
          d.pers_lastname != ''
          and a.pers_personId = d.pers_personId)[/HIGHLIGHT]

          probiers mal aus...

          Comment


          • #6
            Originally posted by ebis View Post
            wenn man sich mal anschaut was in BOL zu DELETE steht, dann kommt eher auf so was:[HIGHLIGHT="SQL"]DELETE FROM person
            FROM person As A
            WHERE not exists (select * from person b where
            b.pers_salutation != ''
            and a.pers_personId = b.pers_personId)
            and not exists
            (select * from person c where
            c.pers_firstname != ''
            and a.pers_personId = c.pers_personId)
            and not exists
            (select * from person d where
            d.pers_lastname != ''
            and a.pers_personId = d.pers_personId)[/HIGHLIGHT]

            probiers mal aus...
            Guten Morgen ebis

            vielen Dank für deine Hilfe! So schnallts das MSSQL... trotzdem sieht es echt komisch aus; zwei FROM Klauseln in der Abfrage nur um der Spalte einen Alias zu verpassen. Da find ich die Logik in MySQL o.ä irgendwie durchschaubarer aber kommt halt auch immer darauf an wie man es lern

            also nochmal vielen Dank!

            Gruß

            Comment

            Working...
            X