다음과 같이 3 개의 테이블이 있습니다.
1) Tag_master
id tag_name
------------------------------
1 Movies
2 English Movies
2) 태그
Tag_id article
----------------------------------
1 ABC
2 ABC
1 XYZ
1 PQR
2 EFG
1 EFG
2 LMN
2 HIJ
--------------------------------
3) 기사보기
article view_date
--------------------------------
ABC 2015-07-01
ABC 2015-07-01
ABC 2015-07-02
ABC 2015-07-03
XYZ 2015-07-05
XYZ 2015-07-05
XYZ 2015-07-08
PQR 2015-08-01
PQR 2015-08-01
LMN 2015-08-02
HIJ 2015-08-02
-----------------------------------
영화 라는 단어가 포함 된 '태그'기사별로 시청자를 확보하고 싶습니다.
다음과 같이 내 쿼리
select t.article,count(*) as cnt from tags t LEFT JOIN tag_master tm ON
t.tag_id=tm.id INNER JOIN article_view act ON t.article=act.article
WHERE tm.tag_name LIKE '%movies%' group by article
그것은 다음과 같은 결과를 제공합니다
article cnt
----------------
ABC 8
HIJ 1
LMN 1
PQR 2
XYZ 3
-----------------
이 결과 기사에서 ABC 에는 4 명의 뷰어 만 있지만 쿼리 결과에서는 8 명이 표시됩니다.
검색어 수정을 도와주세요.
주석에서 이미 지적했듯이 별도로 Be careful what you count
카운트를 얻은 article_view
다음 다시 가입해야합니다.
select
t.article,
act.cnt
from tags t
LEFT JOIN tag_master tm ON t.tag_id=tm.id
INNER JOIN (
select count(*) as cnt, article from article_view
group by article
)act
ON t.article=act.article
WHERE
tm.tag_name LIKE '%movies%'
group by article
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다