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)
Abfrage von ids in einer n-Tabelle [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Abfrage von ids in einer n-Tabelle


 
tomus
23-09-2008, 12:44 
 
Hi an alle,
ich habe da ein Problem wo ich seit 3 Stunden nicht weiterkomme. Ich hoffe ihr könnt mir helfen.

Ich habe eine SQL abfrage wo ich user nach bestimmten Kriterien filter. Dazu gehört auch eins wo er mir alle user filtert die sich für alle ausgewählten "Interessen" interessieren.

Die Usertabelle steht in einer m:n Beziehung zu der Interessentabelle.

Ein beispiel:


SELECT name FROM user u
LEFT JOIN interessen i ON i.user_id = u.id
WHERE i.interessen_id IN (1,2,3,4,5,6)


Diesel Beispiel stellt eine "ODER" Verknüpfung zwischen den enthaltenen IDs dar.

Ich will da jetzt eine "UND" Verknüpfung. Dh. nur die User die auch wirklich alle Interessen (1,2,3,4,5,6) haben.

Brauche dringend Hilfe.

Danke

 
Abraxax
23-09-2008, 14:55 
 
....
WHERE
i.interessen_id = 1 AND
i.interessen_id = 2 AND
i.interessen_id = 3 AND
i.interessen_id = 4 AND
i.interessen_id = 5

wo ich seit 3 Stunden nicht weiterkomme

ah ... ja .... :confused:

 
Payne_of_Death
23-09-2008, 19:21 
 
gesetzten Fall es handelt sich wirklich um die Folge
1,2,3,4,5,6

wäre ein between 1 and 6 sinnvoller ansonsten so wie es die @haxe bereits gesagt hat

 
Abraxax
23-09-2008, 19:41 
 
BETWEEN ist nicht via AND verbunden. ;)

oder du schreibst "id BETWEEN 1 AND 1 AND id BETWEEN 2 AND 2 AND ...."
aber das halte ich für umständlich :D

 
Flip7
24-09-2008, 13:14 
 
Wie wär's, wenn du einfach statt deinem LEFT JOIN einen INNER JOIN nimmst?
Dann musst nicht so viel am Code rumwerkeln ;)

gruß Flip

 
H2O
24-09-2008, 14:33 
 
Original geschrieben von Flip7
Wie wär's, wenn du einfach statt deinem LEFT JOIN einen INNER JOIN nimmst?
Dann musst nicht so viel am Code rumwerkeln ;) Dafür erhälst du auch genau dasselbe Resultat!

 
MyHoPa.de
07-10-2008, 16:52 
 
Falls Du wirklich ALLE Interessen zurückhaben willst, dann kannst Du auch einfach die vorhandenen Interessen Zählen.

Also was in der Art:

SELECT name, COUNT(interessen.id) AS interessen_anzahl
FROM user
JOIN interessen
ON (user.id=interessen.user_id)
WHERE interessen_anzahl = 6
GROUP BY interessen.id


Ich hab jetzt den genauen Count/Group by Synthax nicht im Kopf, aber so müsste es gehen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:12 Uhr.