2011-01-18 24 views
5

Menü başına 5 menü girişi yapabilmek istiyorum. Bu birkaç senaryoyu denedim ama şansım yoktu. Burada, şu an sahip olduğum şeyler buradadır. Aşağıdaki mesajla hata mesajını alıyorum. Hata: Alt sorgu, daha sonra 1 satır döndürür.mySQL Her bir kategorinin en üst 5'ini döndürme

SELECT m.profilename, name 
FROM menus m 
WHERE (SELECT name 
     from menuitems s 
     where m.menuid = s.menuid 
     limit 5) 

Herhangi bir öneri büyük beğeni topluyor.

cevap

13

Sen o `menuitems` tabloda` menuid` sahip olduğunu varsayarak Are bu

SELECT profilename, name 
FROM 
(
    SELECT m.profilename, s.name, 
     @r:=case when @g=m.profilename then @r+1 else 1 end r, 
     @g:=m.profilename 
    FROM (select @g:=null,@r:=0) n 
    cross join menus m 
    left join menuitems s on m.menuid = s.menuid 
) X 
WHERE r <= 5 
+1

Çok teşekkür ederim! Günlerce bunun üzerinde sıkışıp kaldım. – user281867

+0

WOW ... satır içi değişkenlerin bir sorguda seçilmesi ... Bunu daha önce hiç görmedim ... Garip, ama havalı. – DRapp

+0

Bu harika. – Devgeeks

-3
SELECT TOP 5 m.profilename, s.name 
FROM menus m INNER JOIN menuitems s ON m.menuID = s.menuid 
+0

için yan etkileyen değişkenleri kullanmak zorunda? – VoodooChild

+3

mysql, "TOP N" özelliğini desteklemiyor. – nos

İlgili konular