Warum bekommt man doppelte Ergebnisse?

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

  • Warum bekommt man doppelte Ergebnisse?

    Ich kann nicht so ganz nachvollziehen, warum das folgende query
    Code:
    SELECT n1.nest, n1.name FROM hs_dir_nest n1
    LEFT JOIN hs_dir_nest n2 ON n1.lft
    BETWEEN n2.lft AND n2.rgt
    WHERE n1.level = 2
    mir alle Ergebnisse doppelt ausgibt, also ich müsste sowas bekommen:
    Code:
    2  Fruit
    7  Meat
    10 W
    13 X
    Bekommen tu ich aber
    Code:
    2  Fruit
    2  Fruit
    7  Meat
    7  Meat
    10 W
    10 W
    13 X
    13 X
    liegt das an einer undeutlichen Formulierung?
    Ich kann bestimmt n Distinct oder ähnliches Benutzen um eindeutige Ergebnisse zu bekommen, aber man kann den Fehler doch sicherlich irgendwie anders lösen, oder?

    Edit, schon gut, hat sich erledigt, man muss hier n2.nest für n2.lft und n2.rgt genau definieren, ansonsten ist es nur n Zufall
    Zuletzt geändert von Seikilos; 09.07.2005, 14:45.
    SQL Injection kitteh is...

  • #2
    Das ist kein Fehler ...

    Lies mal nach bei LEFT JOIN

    und dann schlag mal nach was DISTINCT bedeutet
    chansel0049
    ----------------------------------------------------
    if you've reached the bottomline - dig further!
    Übersetzer gesucht? http://www.babelport.com

    Kommentar


    • #3
      Seltsam, ich kann bei Left Join nichts darüber finden, es war halt so, dass der BEzeichner nicht eindeutig war, für n1.nest
      Zuletzt geändert von Seikilos; 09.07.2005, 15:01.
      SQL Injection kitteh is...

      Kommentar


      • #4
        Ich brauch einen String der > A und kleiner <G ist,
        ... where left(colName,1)>'A' and left(colName,1)<'G'

        du sollst die logischen Verknüpfungen nochmals durchkauen, bei dir sehe ich ein Verständnisproblem
        EDIT:
        du sollst es zukünftig unterlassen, dein Post radikal zu ändern

        Nochmals sowas, dann werden wir dir Editrecht entziehen!

        Zuletzt geändert von asp2php; 09.07.2005, 15:05.

        Kommentar


        • #5
          Warum sollte BETWEEN nicht nochmal gehen ?
          Du brauchst natürlich ein AND und Klammern bieten sich für die Logik auch an :
          PHP-Code:
           SELECT was FROM table
          WHERE 
          level BETWEEN 2 
          and 10 AND 
          left(name,1)>'A' and left(name,1)<'G' 
          ODER

          PHP-Code:
           SELECT was FROM table
          WHERE 
          level BETWEEN 2 
          and 10 AND 
          left(name,1BETWEEN 'a' AND 'g' 
          [COLOR=orangered]Wat nu passiert? [/COLOR]
          chansel0049
          ----------------------------------------------------
          if you've reached the bottomline - dig further!
          Übersetzer gesucht? http://www.babelport.com

          Kommentar


          • #6
            Danke, das mit der Logik weiß ich, ich blick noch nicht komplett hinter SQL, daher, also left brauch ich nicht, dass die Strings A und G heißen ist nur ein Beispiel.
            Mit between wird etwas erreicht, was ich nicht brauche, nämlich dass ich wenn ich name between a and g habe a und g bekomme ich A und G auch, was ich aber nicht will, da aber between das selbe wie min <= expr AND expr <= max ist, kann ich die Bedingung umwandeln.
            Hoffe ich.

            Edit, sorry, ich weiß garnicht, warum ich das mit <> gelöscht habe.
            SQL Injection kitteh is...

            Kommentar

            Lädt...
            X