Seramis: SQL Statement

Hallo Zusammen!

Was mach ich hier falsch?
UPDATE AVEKBRSFITR a, AVCODFIL_V b SET a.BU_DEF_DVP = 0 where a.FILNR2    = b.FIL_NR2 and
b.TYP       = 'A' and
a.TRANCHE   = 1 and
a.RSN_EKBRS = 1414

danke für eure hilfe!
mfg stefan

  1. b.TYP       = 'A' and

    Du kannst einen string nicht mit = vergleichen

    b.Typ LILE 'A'

    1. b.TYP       = 'A' and
      Du kannst einen string nicht mit = vergleichen

      b.Typ LILE 'A'

      Du Erzählst Unsinn...

      1. b.TYP       = 'A' and
        Du kannst einen string nicht mit = vergleichen

        b.Typ LILE 'A'
        Du Erzählst Unsinn...

        ach geht das? naja kann mich auch irren sorry
        habs zumindest in der schule so gelernt :/

        1. ich glaube das problem liegt ihrengdo beim SET!

        2. b.TYP       = 'A' and
          Du kannst einen string nicht mit = vergleichen

          b.Typ LILE 'A'
          Du Erzählst Unsinn...
          ach geht das? naja kann mich auch irren sorry
          habs zumindest in der schule so gelernt :/

          Dann mußte wohl Deinem Lehrer mal das manual um die Ohren schlagen :-)

          Das sgat nämlich dazu:

          Wenn beide Argumente in einer Vergleichsoperation Zeichenketten sind, werden sie als Zeichenketten verglichen.

          Wozu der Like Operator dient, steht hier
          http://dev.mysql.com/doc/mysql/de/String_comparison_functions.html#IDX1169

          Zum Schraube machen, sag ich Dir nur, wenn man keine Ahnung hat sollte man einfach mal nix schreiben.
          Und das Du keine Ahnung hast hast bereits Eindrucksvoll unter Beweis gestellt.

          TomIRL

  2. b.Typ LIKE 'A'

    1. b.Typ LIKE 'A'

      Vielleicht einfach mal nix schreiben...
      Schaue Dir zunächst ma an was in Deinem SQL String drinsteht und ob das dem entspricht was Du erwartest.
      print ("$sql");
      Und dann lase Dir die Fehler anzeigen.
      echo mysql_errno() . ": " . mysql_error() . "\n";

      Und dann lasse Dich hier nicht von Leuten mit Halbwissen abfrühstücken.
      Hilfe zur Selbsthilfe ist gefragt, und auch debuggen will gelernt sein.

      TomIRL

      1. nur die Ruhe
        nicht gleich die schraube machen

        ruhig atmen und auf 10 zählen

      2. gudn tach!

        vielleicht sollte noch eine anmerkung zu TomIRLs posting gegeben werden, naemlich dass diese fehlerbehandlung speziell fuer php (in verbindung mit mysql) ist.

        wenn du, Seramis, nicht php oder nicht mysql verwenden solltest, waere schoen, wenn du entsprechende informationen darueber preisgeben koenntest.

        prost
        seth

  3. Hallo Zusammen!

    Was mach ich hier falsch?
    UPDATE AVEKBRSFITR a, AVCODFIL_V b SET a.BU_DEF_DVP = 0 where a.FILNR2    = b.FIL_NR2 and
    b.TYP       = 'A' and
    a.TRANCHE   = 1 and
    a.RSN_EKBRS = 1414

    danke für eure hilfe!
    mfg stefan

    BVersuche Dir doch mal klar zu machen ob das Statement dem entspricht was Du erreichen willst:
    Da oben steht:
    Verändere die Tabelle AVEKBRSFITR (was ist das eigentlich für ein beknackter Name, da kann man sich doch was übersichtlicheres suchen.)und die Tabelle AVCODFIL_V,
    Und zwar wie folgt:  a.BU_DEF_DVP = 0
    Also nur das eine Feld soll verändert werden?
    Und dann kommen Deine Bedingungen:
    a.FILNR2    = b.FIL_NR2 and

    b.TYP       = 'A' and
    a.TRANCHE   = 1 and
    a.RSN_EKBRS = 1414

    Erscheint Dir das logisch?
    Mir nicht..
    Wie das Update Statement korrekt verwendet wird, steht hier:

    http://dev.mysql.com/doc/mysql/de/UPDATE.html

    TomIRL

    1. Hello,

      a.FILNR2    = b.FIL_NR2 and

      b.TYP       = 'A' and
      a.TRANCHE   = 1 and
      a.RSN_EKBRS = 1414
      Erscheint Dir das logisch?
      Mir nicht..

      Wieso, er bildet das kartesische Pordukt aller Sätze und schränkt es nach und nach ein.

      a.FILNR2           =  b.FIL_NR2       and
                            b.TYP     = 'A' and
      a.TRANCHE  = 1                        and
      a.RSN_EKBRS = 1414

      Wenn man es so schreibt, sieht man auch, dass beide Tabellen erst gefiltert werden und dann das  Produkt über die beiden Filtermengen gebildet wird, aber nur an den Stellen, an denen die Bindung

      a.FILNR2  =  b.FIL_NR2

      besteht.

      Es kann also durchaus ein sinnvolles Statement sein.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
    2. yo,

      BVersuche Dir doch mal klar zu machen ob das Statement dem entspricht was Du erreichen willst:

      oder du machst dir klar, was er erreichen will. nicht alles, was man nicht versteht macht automatisch keinen sinn.

      Verändere die Tabelle AVEKBRSFITR (was ist das eigentlich für ein beknackter Name, da kann man sich doch was übersichtlicheres suchen.)und die Tabelle AVCODFIL_V

      die zweite tabelle AVCODFIL_V wird meiner meinung nach nicht verändert. insofern ändert er nur eine spalte in einer tabelle. wenn ich den sinn des join richtig verstehe, dann geht es ihm darum, die richtigen datensätze der gewünschten spalte in der ersten tabelle zu verändern. und diese gewünschten datensätze stehen im zusammenhang mit der zweiten tabelle. deshalb bildet er den join und nicht um werte in zwei tabellen zu verändern.

      Erscheint Dir das logisch?
      Mir nicht..

      wie war das, was du anderen immer so gerne schreibt. wenn man keine ahnung hat, einfach mal nichts schreiben .... ?

      Ilja

  4. Hello,

    Was mach ich hier falsch?
    UPDATE AVEKBRSFITR a, AVCODFIL_V b SET a.BU_DEF_DVP = 0 where a.FILNR2    = b.FIL_NR2 and
    b.TYP       = 'A' and
    a.TRANCHE   = 1 and
    a.RSN_EKBRS = 1414

    Das könnte eine Typunverträglichkeit sein.
    Wenn BU_DEF_DVP von einem Stringtyp (auch ENUM und SET sind Stringtypen) ist, dann muss es heißen

    SET a.BU_DEF_DVP = '0'

    Wenn man nicht rechnen will mit den Werten, dann kann und sollte man sie ohnehin immer in Häkchen übergeben. Das kann auch den zusätzlichen Nutzen des erhöhten Schutzes vor Injektion haben.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau