n'abend,
Ich habe es wiefolgt versucht:
SELECT * FROM content WHEREid
IN (SELECT content_id FROM rating ORDER BYpoints
DESC LIMIT 5)
Falls da eine Fehlermeldung kommt, solltest du die dazu packen.
MySQL kann mit der LIMIT-Klausel in Subqueries bisweilen noch nichts anfangen. Glücklicherweise können Subqueries aber auch in Form von JOINs dargestellt werden:
SELECT *
FROM content c
JOIN rating r
ON r.content_id = c.id
ORDER BY r.points DESC
LIMIT 5;
Ich habe aber das Gefühl, dass du pro Datensatz in der Tabelle content mehrere verknüpfte Datensätze in der Tabelle rating hast. Vermutlich willst du die 5 Datensätze aus content haben, mit der größten _Gesamtpunktzahl_:
SELECT c.*, SUM(r.points) AS gesamtpunktzahl
FROM content c
JOIN rating r
ON r.content_id = c.id
GROUP BY r.content_id
ORDER BY gesamtpunktzahl DESC
LIMIT 5;
oder auch so:
SELECT c.*, r.gesamtpunkzahl
FROM content c
JOIN
(
SELECT content_id, SUM(points) AS gesamtpunktzahl
FROM rating
ORDER BY gesamtpunktzahl DESC
LIMIT 5
) AS r
ON r.content_id = c.id;
Die letzte Query ist völlig in Ordnung, auch wenn sie erst mal ungewohnt ausschaut. Es handelt sich hierbei auch nicht um eine Subquery, sondern mehr um einen "Temporären View".
weiterhin schönen abend...
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|