select Statement prob. !!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • select Statement prob. !!

    Bitte helft mir,
    ich hab da ein Problem mit einem select Statement

    $link=mysql_connect(); mysql_select_db("art");
    $anfrage="select artnr,bez,anz,ek,ek*anz as ges from dat where ersatz='' and anz='1' and kenn='' or kenn='H' or kenn='J' or kenn='Z' order by bez;";
    $ergebnis=mysql_query($anfrage) or die ("Fehlermeldung=".mysql_error());


    alle where Bedingungen werden erfüllt bis auf
    anz='1' !!!!!
    anz ist ein int(3) und es sollen eben alle ausgegeben werden
    wo 1 drinsteht.

    was mach ich falsch ??

    gruß
    michael

  • #2
    alle bedigungen bis auf anz werden erfüllt und du wunderst dich, dass du nix zurückkriegst?

    wenn anz ein int is, dann mach die hochkommata weg und das mit kenn sollte man auch ändern
    das semikolon am ende ist auch nich gut denk ich
    ek*anz as ges
    was is das?

    Code:
    SELECT
      artnr,bez,anz,ek,anz,ek*anz as ges
    FROM dat 
    WHERE ersatz='' AND anz=1 AND kenn IN ('','H','J','Z')
    ORDER BY bez;
    was kommt denn für ne fehlermeldung?
    Zuletzt geändert von mrhappiness; 08.04.2003, 09:54.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      1.)
      ek*anz as ges
      ist ein berechnetes Feld und rechnet die Zahl in anz * ek

      2.)
      gar keine Fehlermeldung ! ;-(
      es werden halt nur alle Datensätze geliefert, auch jene in denen
      in "anz" was anderes steht als "1" !


      danke für Eure Hilfe !
      michael

      Kommentar


      • #4
        auch mit meiner abfrage?

        kann sein, dass sql deine ANDs und ORs anders interpretiert als du das dachtest
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Haste mal Happies sql ausprobiert???
          hier:
          where ersatz='' and anz='1' and kenn='' or kenn='H' or kenn='J' or kenn='Z'

          werden alle Datensätze ausgegeben die anz=1 und kenn ='' haben oder bei denen
          kenn = H, oder J oder Z ist, unabhängig davon was in anz steht.
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            also mit

            $anfrage="select artnr,bez,anz,ek,ek*anz as ges from dat where anz>=1 and ersatz='' and kenn IN ('','H','J','Z') order by bez;";

            gehts !

            danke für Deine Hilfe !
            bin wohl auch aufm Schlauch gestanden

            gruß
            michael

            Kommentar


            • #7
              Hab vergessen zu erwähnen das ich hier jetzt anz>=1 geschrieben
              hab, das wollt ich auch so.
              habs bei der Suche nach einem Problem nur das "größer als" weggelassen!

              Kommentar


              • #8
                hättest alternativ auch deine ganzen ORs klammern können
                Code:
                ersatz='' and kennz>=1 and (kenn='' or kenn='H' ...)
                aber mit in isses hübscher find ich

                da AND und OR die gleiche priorität haben, musst du ausdrücke, die logisch zusammengehören eben klammern, sonst geht das von links nach rechts durch und gut is
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar

                Lädt...
                X