Heyho nochmal!
SELECT *
FROM table1 b,
table2 e,
( SELECT * FROM table1 sub_b, table3 sub_r WHERE sub_b.benutzer_id = sub_r.benutzer_id ORDER BY sub_r.bewertung LIMIT 10 ) r
WHERE b.benutzer_id = e.benutzer_id
AND b._benutzer_id = r.benutzer_id
> Dem ist leider nicht ganz so, denn ich möchte ja nicht jeden User haben, sondern die Auswahl einschränken :)
Ja meine Anfrage trifft in der Tat keine Auswahl. Ich bin davon ausgegangen, dass Du die Dir dann einfach selbst einbaust ^^
Wenn Du in die WHERE-Klausel "AND b.name LIKE '%Mustermann'" ergänzt, sollte es Dein Ergebnis liefern.
Jetzt brauchen wir offensichtlich noch die User, die unbewertet sind:
~~~sql
( SELECT b.feldX, e.feldY
FROM table1 b,
table2 e,
( SELECT * FROM table1 sub_b, table3 sub_r WHERE sub_b.benutzer_id = sub_r.benutzer_id ORDER BY sub_r.bewertung LIMIT 10 ) r
WHERE b.benutzer_id = e.benutzer_id
AND b.benutzer_id = r.benutzer_id
AND b.name LIKE '%MEIER' )
UNION
( SELECT b.feldX, e.feldY
FROM table1 b,
table2 e,
WHERE b.benutzer_id = e.benutzer_id
AND b.benutzer_id <> ALL ( SELECT benutzer_id FROM table3 )
AND b.name LIKE '%MEIER' )
Einfach durch ein UNION realisiert. Achte darauf, dass die Felder der beiden zu vereinigenden Ergebnisse mit ihren Feldern stimmig sind und bau je nachdem wie Du mit denen, die unbewertet sind, noch verfahren willst, Bedingungen in die zweite Abfrage ein.
Wäre schön, wenn Du die auftretenden Probleme genauer beschreiben könntest. Wusste ja keiner, dass die Abfrage schon fast so läuft, wie Du möchtest, und es fehlten nur noch die Leute ohne Bewertung ( oder hab ich das jetzt missverstanden?)
Am Besten wär wie gesagt immernoch, die konkrete Problemstellung ( sinngemäßg, nicht syntaktisch und nicht anfragespezifisch) und der konkrete Aufbei Deiner Tabellen.
Damit wär Dein Problem schon gestern Abend gelöst ; )
Beste Grüße
~ Thilo : )