2009-06-30 17 views
0

から5つの結果、私はselect文をやろうとしていると、それが5MYSQL select文 - 各ユーザー

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 
に、各ユーザ(U.id)の結果の数を制限していないことを除いて動作します

私は重複を排除するためにI.idでグループ化しています。私の研究からは、その列でグループ化してもHAVE COUNTしか使用できないようですが、私はU.idでグループ化できないか、結果行を失うことになります。

答えて

1

HAVINGの代わりに、LIMIT 5を叩くことができますか?

編集: OPできないLIMITクエリ全体、
と、私の知る限り、MySQLのはサブクエリでLIMITをサポートしていない、
ので、あなたは5(5)ユーザーIDを持つ一時テーブルを作成することができます

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; 

これがどのように機能するか教えてください。

+0

いいえ、私が知る限り、LIMITは完全なクエリにしか適用できません。 – makeee