2013-12-03 5 views
0

조회수가 가장 많은 항목이있는 영역이 있습니다.클릭으로 주문한 목록의 임의 항목 수를 표시합니다.

내가 실제로하고있는 것은 ORDER BY clicks DESC LIMIT 0, 3 나의 데이터베이스 에 대한 쿼리이며 foreach와 함께 이것을 반향한다. 이 시점에서 사용자를 위해 정적 인 방법을 느낍니다. 그래서 내가 가장 많이 본 아이템의 풀의 무작위 아이템을 ORDER BY clicks DESC LIMIT 0, 11으로 표시하고 for 루프를 ($i=0; $i>=3;$i++)으로 반복하고 에코 아웃하기 전에 $items[array_rand($items)]; 아이템을 섞어 두는 것이 그 이유입니다.

실제로 한 항목이 두 번 이상 표시 될 수 있기 때문에 실제로 안심할 수 있습니다.

제 질문은 코드 오버 헤드없이 깨끗한 방법으로 문제를 해결할 수있는 좋은 방법이 있는지 제 질문입니다.

+0

코드를 올바르게 포맷하십시오. 코드 블록은 모든 코드 행 앞에 4 칸 들여 쓰기하여 삽입됩니다. 자세한 도움말은 [편집 FAQ] (http://stackoverflow.com/editing-help#code) –

답변

0

적절한 쿼리를 통해 간단히 수행 할 수 있습니다. 바로 테이블 이름을 삽입하십시오.

SELECT * 
FROM 
    (SELECT * 
    FROM TABLE_NAME 
    ORDER BY clicks DESC LIMIT 0, 11) AS most_clicked 
ORDER BY RAND() LIMIT 0, 3 

가장 임의의 순서로 11 개의 랜덤 행 3 개가 반환됩니다.

+0

을 참조하십시오. 정확히 내가 무엇을 찾고 있었는지. 감사합니다! – user1946431

관련 문제