2012-10-10 1 views
0

누군가 내 사이트에서 블로그 기사를 방문 할 때마다 [blog_article_hits] 테이블에이를 기록합니다. 각 방문에는 한 행이 있습니다. 이제 기사 제목과받은 조회수 또는 비율을 보여주는 지난 14 일 간의 인기있는 기사 목록을 표시하려고합니다.MySQL - 레코드 계산 및 카운트와 함께 인기순 순서대로 표시

예 :

This is a blog article  1,0732 
This is another article  930 

내 시도 :

SELECT 
tre.article_id, COUNT(*) AS total_hits, art.title, art.description, 
pho.photo_id 
FROM blog_article_stats tre 
LEFT JOIN blog_articles AS art ON tre.article_id = art.article_id 
LEFT JOIN blog_photos AS pho ON art.article_id = pho.article_id 
WHERE tre.d_time BETWEEN DATE_SUB(Now(), INTERVAL 14 DAY) AND Now() 
AND pho.status = 'Published' AND art.status = 'Published' 
GROUP BY tre.article_id 
ORDER BY total_hits DESC LIMIT 5 

그것은 아주 가까이 있지만 매우 옳지 않다. 가장 인기있는 기사가 올바른 순서로 나열되어 있지만 각 제목 옆의 수는 정확하지 않습니다. 실제로 얼마나 많은 사진이 방문되었는지가 아니라 각 기사에 대해 얼마나 많은 사진이 있는지를 보여줍니다. GROUP BY를 사용하면 도움이 될 것 같아서 [pho.article_id]에 보조 GROUP 절을 추가하려고 시도했지만 도움이되지 않습니다.

[pho.photo_id]을 (를) 선택하고 [pho.blog_photos]에 가입했습니다. 순전히 각 나열된 결과 옆에 사진 한 개를 표시하고 싶습니다.

아무도이 문제를 해결하는 방법에 대해 조언을 해 줄 수 있습니까?

많은 덕분에 adv.

답변

1

변경 카운트 : PK 해당 테이블의 기본 키입니다

COUNT(DISTINCT tre.PK) AS total_hits 

.

+0

감사합니다 ypercube, 치료를했습니다. – ShadowStorm

관련 문제