Hier ist meine Frage:Wie kann ich alternativ Top Ten bekommen?
SELECT
pr1.id AS user_id,
pr1.title AS user_name,
pr2.id AS liker_id,
pr2.title AS liker_name,
x.which AS which_table,
x.cnt AS total,
x.rank AS rk
FROM
(
SELECT rid, rootid, which, COUNT(*) AS cnt, rank
FROM
(
SELECT @rank1 := @rank1 + 3 rank, rid, rootid, 'vote' which
FROM p_likes, (select @rank1 := -2) q
UNION ALL
SELECT @rank2 := @rank2 + 3 rank, rid, rootid, 'comment' which
FROM p_comments, (select @rank2 := -1) q
UNION ALL
SELECT @rank3 := @rank3 + 3 rank, rid, rootid, 'friend' which
FROM relations, (select @rank3 := 0) q
) y
WHERE y.rootid = 1246 AND y.rootid <> y.rid
GROUP BY y.rid, y.rootid, y.which
) x
INNER JOIN pagesroot pr1 on x.rootid = pr1.id
INNER JOIN pagesroot pr2 on x.rid = pr2.id
ORDER BY x.rank desc, x.cnt desc, x.which
LIMIT 30;
Meine Frage ist über die Bestellung. Ich möchte 10 Zeilen (wenn vorhanden) jede Tabelle bilden. Es gibt 3 Tabellen (p_likes
, p_comments
, relations
). Das Ergebnis sollte also maximal 30 Zeilen umfassen.
Aber was ist meine Frage: Ich muss alternativ bestellen. Ich meine erste Reihe von p_likes
sein soll, zweite von p_comments
sollte dritte von relations
sollte vierte von p_likes
und so weiter sein sollte ..
Ich möchte auch sie auf der cnt
Spalte sortieren basierend zuerst . Ich meine, ich will Top-Ten von jedem Tisch.
Wie kann ich das tun?
Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry
@Strawberry Ist meine Frage nicht klar für Sie? – stack
Beziehen Sie sich auf die angenommene Antwort verbunden – Strawberry