본문 바로가기
MySql

MySQL SQL 조인 일대 다 관계-이미지 당 투표 수 계산?

by 베이스 공부 2020. 12. 24.
반응형

좋아요, 2 개의 테이블이 있습니다.

images                           votes
----------------------------     --------------------
image_id |  name | square_id     vote_id |  image_id
----------------------------     --------------------
1         someImg    14          1            45  
2         newImg     3           2            18     
3         blandImg   76          3            1 
...                              ...
n                                n

이것은 일대 다 관계입니다. 각 이미지는 여러 개의 투표를 가질 수 있지만 투표는 하나의 이미지에만 관련 될 수 있습니다. 이미지 ID와 지정된 조건 (예 : square_id 기반)에서 투표 수를 표시하는 조인 쿼리를 생성하려고합니다. 따라서 쿼리 결과는 다음과 유사합니다.

query_result
----------------------
image_id |  vote_count
----------------------
18          46
26          32
20          18
...
55          1

하지만 내가 할 수있는 최선은 이것입니다.

query_result
----------------------
image_id |  vote_id
----------------------
18          46
18          45
18          127
26          66
26          43
55          1

문제가 보이십니까? 각 image_id 는 각 vote_id 에 대해 여러 번 나열됩니다. 이것은 이것을 생성하는 쿼리입니다.

SELECT images.image_id, votes.vote_id 
  FROM votes JOIN images ON images.image_id=votes.image_id

이미지가 가진 모든 투표의 합계 인 vote_count 열을 만들 수없는 것 같습니다. count () 함수를 사용하여 알 수없는 방법이 있습니까?

 

해결 방법

 

GROUP BY images.image_id 가 필요하고 COUNT (votes.vote_id) 를 사용해야합니다.

SELECT images.image_id, COUNT(votes.vote_id) AS cote_count
FROM votes 
JOIN images ON images.image_id=votes.image_id
GROUP BY images.image_id

 

참조 페이지 https://stackoverflow.com/questions/18571270

 

 

반응형

댓글