Mam 2 tabele. w "a" "#__user_forum" przechowuję informacje użytkowników odnośnie konkretnego forum.
Np dla forum o id 2 (forum_id) chcę wyświetlić listę użytkowników (user_id) pogrupowanych według reputacji (reputation) , ale tak żeby pobierało tylko max trzech użytkowników z każdej reputacji.
Następnie ma pobrać dane użytkownika z tabeli "#__users" 'b' czyli b.id = a.user_id
gdzie xxx to przykładowa nazwa użytkownika pobrana z tabeli #__users
Czyli wynik ma wyglądać tak:
reputacja1
użytkownicy:919-xxx,924-xxx,926-xxx,
reputacja2
użytkownicy:917-xxx,922-xxx,923-xxx
reputacja3
użytkownicy:920-xxx,921-xxx,925-xxx
Chcę to zrobić w jednym zapytaniu moje próby wyglądają tak:
W tym zapytaniu wyświetla tylko po dwóch użytkowników i to z każdego forum
$query =" SELECT a.user_id AS user_id,a.reputation as reputation, b.name AS name,COUNT(b.id) AS 'outgoing call count' FROM #__user_forum a LEFT JOIN ( SELECT id, name FROM #__users ) b ON a.user_id = b.id AND a.reputation BETWEEN 1 AND 3 WHERE a.forum_id = 2 GROUP BY a.reputation";
a w tym to wyświetla tylko po jednym użytkowniku z każdej reputacji
$query="SELECT a.user_id AS user_id,a.reputation as reputation, b.name AS name FROM #__user_forum as a LEFT JOIN #__users AS b ON a.user_id = b.id WHERE a.forum_id = 2 GROUP BY a.reputation";
mam jeszcze coś takiego, ale to w ogóle jest porażka
$query =" SELECT a.user_id AS user_id,a.reputation as reputation, b.name AS name,COUNT(b.id) AS countt FROM #__user_forum a LEFT JOIN ( SELECT id, name FROM #__users ) b ON a.user_id = b.id AND a.reputation BETWEEN 1 AND 3 WHERE a.forum_id = 2"
