Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Warum bekommt man doppelte Ergebnisse? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Warum bekommt man doppelte Ergebnisse?


 
Seikilos
09-07-2005, 15:40 
 
Ich kann nicht so ganz nachvollziehen, warum das folgende query
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:

2 Fruit
7 Meat
10 W
13 X


Bekommen tu ich aber

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

 
chansel0049
09-07-2005, 15:52 
 
Das ist kein Fehler ...

Lies mal nach bei LEFT JOIN

und dann schlag mal nach was DISTINCT bedeutet

 
Seikilos
09-07-2005, 15:56 
 
Seltsam, ich kann bei Left Join nichts darüber finden, es war halt so, dass der BEzeichner nicht eindeutig war, für n1.nest

 
asp2php
09-07-2005, 16:03 
 
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 ;)du sollst es zukünftig unterlassen, dein Post radikal zu ändern :teach:

Nochmals sowas, dann werden wir dir Editrecht entziehen!

 
chansel0049
09-07-2005, 16:08 
 
Warum sollte BETWEEN nicht nochmal gehen ?
Du brauchst natürlich ein AND und Klammern bieten sich für die Logik auch an :
SELECT was FROM table
WHERE
level BETWEEN 2 and 10 AND
left(name,1)>'A' and left(name,1)<'G'

ODER

SELECT was FROM table
WHERE
level BETWEEN 2 and 10 AND
left(name,1) BETWEEN 'a' AND 'g'

Wat nu passiert?

 
Seikilos
09-07-2005, 19:31 
 
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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:24 Uhr.