Mysql-Anfrage:
-
Hi,
ich habe folgendes Problem mit einer Mysql-Anfrage:
Ich habe eine Tabelle "members" und eine Tabelle "jokes". Jetzt will ich eine Liste der Members haben (absteigend)(DESC) mir der Anzahl Ihrer Joke einträge.
(toplist sozusagen )Jetzt muss aber ein Joke eintrag drei kriterien erfüllen:
1: members.id = jokes.member_id
2: members.id = jokes.member2_id
3: jokes.status = xy_statusWie ist das möglich ?
-
Du musst jokes über ein LEFT JOIN mit members verbinden und dann ein GROUP BY mit members.id durchführen
-
Ja das ist mir klar, nur ist das Problem, dass ich nicht weiß wo ich mehr als eine kriterie angeben kann.
"WHERE" ist ja bei Left joins NICHT erlaubt !!
-
JayJay, bist du der von www.rautemusik.de ??
-
nicht, dass ich wüsste warum ?
-
JayJay schrieb:
"WHERE" ist ja bei Left joins NICHT erlaubt !!
Wieso sollte das nicht erlaubt sein
Es heißt doch nur:
You should generally not have any conditions in the ON part that are used to restrict which rows you want in the result set, but rather specify these conditions in the WHERE clause.
-
WHERE Bedingungen sind sehrwohl erlaubt, hier solltest du fündig werden!
http://dev.mysql.com/doc/mysql/de/LEFT_JOIN_optimisation.html
hth
-
Man kann JOINS auch als WHERE ausdrücken.
-
SELECT COUNT(jokes.id) AS jokes, members.id AS member WHERE jokes.member_id = members.id AND jokes.member2_id AND jokes.status = "xxx" ORDER BY jokes DESC
Diese Query gibt allerdings nur ergebnisse zurueck, die kein NULL enthalten bei den beiden joins.
Sollen die Ergebnisse auf NULL enthalten duerfen, muss ma LEFT JOIN hernehmen.