>

2 개의 표가 있습니다. 하나는 투표 응답이고 다른 하나는 투표입니다.

DESC polls;
Field   Type      Null  Key Default Extra
id      int(11)   NO    PRI NULL    auto_increment
pollId  int(11)   NO    MUL NULL    
answer  varchar(150)    YES NULL    
DESC votes;
Field    Type      Null Key Default Extra
id       int(11)    NO  PRI NULL    auto_increment
pollId   int(11)    NO  MUL NULL    
answerId int(11)    NO  MUL NULL    
userId   int(11)    NO  MUL NULL   

모든 답변과 투표로 다음 결과를 얻으려고합니다 :

pollId answerId numberOfVotes
1        1          20
1        2          10
1        3          0

응답에 투표를 올바르게 참여 시키려고했지만 효과가 없습니다 :

SELECT answers.id, COUNT(votes.answerId) FROM answers JOIN votes ON votes.pollId = answers.pollId GROUP BY votes.pollId;

  • 답변 # 1

    왼쪽 조인 사용

    데모

    SELECT polls.pollId,polls.id,COUNT(userid) as counts
    FROM polls left JOIN votes ON votes.pollId = polls.pollId and 
    polls.id=votes.answerId
    GROUP BY polls.pollId,polls.id order by polls.id
    
    

    출력 :

    pollId  id  counts
    14      17  0
    14      18  2
    14      19  0
    14      20  0
    
    

  • 이전 웹 사이트 배포 중 클라이언트 측 일관성 보장
  • 다음 sequelize.js - Sequelize 중첩 열망로드는 동일한 모델과 연관된 두 레코드를로드하지 않습니다