2009-06-30 6 views
0

Ich versuche, eine select-Anweisung zu tun, und es funktioniert, außer, dass es nicht die Anzahl der Ergebnisse für jeden Benutzer (U.id) bis 5. BegrenzungMYSQL select-Anweisung - 5 Ergebnisse von jedem Benutzer

SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image 
FROM favorites AS F 
INNER JOIN users AS U 
ON F.faver_profile_id = U.id 
INNER JOIN items AS I 
ON F.notice_id = I.id 
WHERE faver_profile_id IN ('.$users.') 
GROUP BY I.id HAVING COUNT(U.id) <= 5 
ORDER BY F.faver_profile_id, F.created DESC 

Ich gruppiere nach I.id, um Duplikate zu eliminieren. Aus meinen Nachforschungen sieht es so aus, als könnten Sie nur HAVING COUNT verwenden, wenn Sie auch nach dieser Spalte gruppieren, aber ich kann nicht nach U.id gruppieren oder ich verliere Ergebniszeilen.

Antwort

1

Statt HAVING, können Sie eine LIMIT 5 da drin schlagen?

Edit: OP kann nicht LIMIT gesamte Abfrage,
und AFAIK, MySQL nichtLIMIT in Subqueries nicht unterstützt,
so können Sie eine temporäre Tabelle mit fünf (5) Benutzer-IDs erstellen:

create table temp_table (id INT); 
insert into temp_table (id) SELECT U.id FROM users U LIMIT 5; 

SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image 
FROM favorites AS F 
     INNER JOIN temp_table AS Ut 
     ON F.faver_profile_id = Ut.id 
     INNER JOIN items AS I 
     ON F.notice_id = I.id 
WHERE faver_profile_id IN ('.$users.') 
GROUP BY I.id 
ORDER BY F.faver_profile_id, F.created DESC; 

drop table temp_Table; 

Lassen Sie uns wissen, wie das funktioniert.

+0

Nein, soweit ich weiß LIMIT kann nur auf die vollständige Abfrage angewendet werden. – makeee

Verwandte Themen