Announcement

Collapse
No announcement yet.

Feld uas Tabelle 1 mit Feld aus Tabelle 2 updaten

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

  • Feld uas Tabelle 1 mit Feld aus Tabelle 2 updaten

    Hallo,
    verzweifle gerade an einem kleinen Problem. Ich möchte ein Feld aus einer Tabelle meiner Datenbank mit einem anderen Feld aus einer Tabelle aus der gleichen Datenbank updaten. Das ganze sieht bisher so aus:

    UPDATE binvrk, BARTPH
    SET BINVRK.inv_mek = BARTPH.vk
    where BINVRK.bsa_id = BARTPH.bsa_id_linkkey
    AND BINVRK.bartlh_id = '5'
    AND BARTPH.staffelnr = '1';

    Das Feld inv_mek jedes Datensatzes aus BINVRK soll also mit dem Inhalt von vk der dazu passenden Datensätze aus BARTPH upgedated werden (gleiche BSA_IDs).
    Wenn ich die o.g Abfrage in IBexpert ausführe, bekomme ich folgende Fehlermeldung:
    "...Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 1, char 14.
    ,.
    "

    Ich verwende Firebird 1.5.3 als Datenbank.

    Kann mir jemand sagen, wo in meiner SQL-Anweisung der Wurm ist ?

    Danke schon mal !

  • #2
    Hallo,

    Code:
    update binvrk b1 set b1.inv_mek = (select b2.vk from bartph b2 where b1.bsa_id = b2.bsa_id_linkkey and b2.staffelnr = '1')
    where
      b1.bartlh_id = '5'
      and exists (select 1 from bartph b3 where b1.bsa_id = b2.bsa_id_linkkey)
    Ich hoffe, ich habe mich mit den Tabellenaliasen/Feldnamen nicht vertan. ;-)

    Obiges klappt natürlich nur, wenn im Sub-Select select b2.vk ... maximal ein Datensatz zurückkommt.


    Thomas
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Danke erst mal für die Antwort.

      Ich hab´s grade mal getestet und er meckert die letzte Zeile mit folgender

      Fehlermeldung an:
      SQL error code = -206.
      Column unknown.
      B2.BSA_ID_LINKKEY.
      At line 10, column 58.

      Scheint die B2.BSA.... plötzlich nicht mehr zu kennen.

      Gruss, Klaus.

      Comment


      • #4
        Originally posted by Thomas Steinmaurer View Post
        ...Ich hoffe, ich habe mich mit den Tabellenaliasen/Feldnamen nicht vertan. ;-)...
        <offTopic>Ich versteh auch immer nicht warum die Leute ihre Beispiele nicht mit TabelleA und TabelleB und FeldPK machen, stattdessen heißen die Tabellen grbnkluf und grbnkduf und die Felder grdnkluf und kein Mensch kann die auf den ersten Blick auseinanderhalten. Um ehrlich zu sein mach ich mir nicht mehr die Mühe solche Beispiele zu analysieren - Sorry </offTopic>
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Hallo,

          klar kann mein UPDATE Statement nicht funktionieren, aber der Fehler ist auch nicht schwer zu finden. ;-)

          Probier mal:

          Code:
          update binvrk b1 set b1.inv_mek = (select b2.vk from bartph b2 where b1.bsa_id = b2.bsa_id_linkkey and b2.staffelnr = '1')
          where
            b1.bartlh_id = '5'
            and exists (select 1 from bartph b3 where b1.bsa_id = b3.bsa_id_linkkey)
          Thomas

          @Falk: Was soll man machen. ;-) Das Leben ist hart und ungerecht. Ich bin froh,
          dass ich solche Bezeichner nicht habe. Vielleicht ist es ja sogar eine Datenbank eines Drittherstellers oder man hat die Datenbank von einem Vorgänger übernommen. Man weiß ja nie. ;-)
          Thomas Steinmaurer

          Firebird Foundation Committee Member
          Upscene Productions - Database Tools for Developers
          Mein Blog

          Comment


          • #6
            Hallo Thomas,
            Originally posted by Thomas Steinmaurer View Post
            @Falk: Was soll man machen. ;-) Das Leben ist hart und ungerecht. Ich bin froh,
            dass ich solche Bezeichner nicht habe. Vielleicht ist es ja sogar eine Datenbank eines Drittherstellers oder man hat die Datenbank von einem Vorgänger übernommen. Man weiß ja nie. ;-)
            da hast du vollkommen recht, die Namen mögen sogar in der speziellen Businesslogik sinnvolle Abkürzungen sein und manchmal hat man eben Altlasten zu tragen - aber bevor ich das poste kann ich mir doch die Mühe machen und eine leserliche (abgespeckte) Version erstellen. Manchmal hilft das sogar schon den Fehler selber zu finden.

            Sorry, war schon wieder Offtopic

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Hallo Falk,

              eh egal, dann geht es halt Offtopic weiter.

              Ehrlich gesagt ist es mir sogar lieber, wenn das Original-Statement gepostet wird, weil man nur dann gezielt die Probleme aufzeigen kann. Wenn es sich um ein "künstliches" Statement handelt, dann fehlen meistens bestimmte Dinge, d.h. dies ist dann nicht wirklich aussagekräftig was das eigentliche Problem ist. Nur so meine Erfahrung, dass es manchmal ein paar mal hin und her gehen muss, bevor sich herausstellt, dass die gepostete Anweisung gar nicht die ist, die nicht ausgeführt werden kann. Schon oft genug erlebt. ;-)


              Thomas
              Thomas Steinmaurer

              Firebird Foundation Committee Member
              Upscene Productions - Database Tools for Developers
              Mein Blog

              Comment


              • #8
                Hallo Thomas,

                die Syntax scheint zu arbeiten. Das gewollte Ergebnis steht zwar noch aus, anscheinend habe ich noch nen klienen Logikfehler drin, aber da Du mir Deine Hilfe mit dem Script hast zu teil werden lassen, werde ich den Rest wohl noch hinbekommen.

                Sorry, wenn´s für nen Aussenstehenden etwas schwer zu lesen war, aber bevor man beim Umschreiben noch versehentlich nen Fehler mache...

                Danke erst mal.

                Gruss, Klaus.

                Comment


                • #9
                  Hallo Thomas,

                  unter bestimmten Umständen geb ich dir Recht. Bei der Suche nach syntaktischen oder logischen Fehler hilft natürlich das Original besser als ein Konstrukt, aber wenn es um grundlegende Dinge oder prinzipielle Vorgehensweisen geht, dann ist mir was einfach lesbares lieber .
                  Mir können dann nur die leid tun, die sich mit solchen Tabellennamen tatsächlich rumärgern müssen.
                  Zum Abschluß möchte ich dann nochmal auf die Formatierungshilfe [ highlight=sql ]SQLText[ /highlight ] hinweisen, um SQL-Texte wenigstens "augenfreundlicher" zu machen.

                  [highlight=sql]UPDATE binvrk, BARTPH
                  SET BINVRK.inv_mek = BARTPH.vk
                  where BINVRK.bsa_id = BARTPH.bsa_id_linkkey
                  AND BINVRK.bartlh_id = '5'
                  AND BARTPH.staffelnr = '1';[/highlight]

                  Sieht doch schon besser aus! Oder?

                  Jetzt noch ein paar Einrückungen:
                  [highlight=sql]UPDATE binvrk, BARTPH SET
                  BINVRK.inv_mek = BARTPH.vk
                  where BINVRK.bsa_id = BARTPH.bsa_id_linkkey
                  AND BINVRK.bartlh_id = '5'
                  AND BARTPH.staffelnr = '1';[/highlight]

                  Perfekt!

                  Gruß Falk
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment


                  • #10
                    Hallo Falk,

                    besten Dank für den Formatierungshinweis! Diesen Tag kannte ich bis dato nicht.

                    Thomas
                    Thomas Steinmaurer

                    Firebird Foundation Committee Member
                    Upscene Productions - Database Tools for Developers
                    Mein Blog

                    Comment


                    • #11
                      Originally posted by Thomas Steinmaurer View Post
                      Hallo Falk,

                      besten Dank für den Formatierungshinweis! Diesen Tag kannte ich bis dato nicht.

                      Thomas
                      Da gabs einen Wunsch von Bernhard Geyer, der prompt erfüllt wurde .

                      Gruß Falk
                      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                      Comment

                      Working...
                      X