그래서이 링크는 내 링크와 투표 테이블에서 가져오고 마지막 데이터 열이 하나 필요합니다. 내 투표 테이블은 모든 사용자의 투표로 구성되며 사용자는 링크 당 한 번만 투표 할 수 있으며 투표 값은 -1, 0 또는 1입니다. 투표 테이블에 user_id 외래 키가 있으며 현재 사용자의 투표를 수집하려고합니다. . 현재 쿼리의 복잡성으로 인해 두 번째 쿼리가 필요할 수도 있지만 가능한 경우이를 피하고 싶습니다. 나는 현재 로그인 한 사용자의 투표가 무엇인지 알 필요가 있습니다. 사용자는 링크에 한 번만 투표 할 수 있기 때문에 링크에는 투표 값이 두 개 이상 없습니다.MySQL : 링크 쿼리에서 현재 사용자 투표하기
몇 가지 참고 사항
- 모든 링크가 링크에 투표 사용자는 그 투표가와 그 투표 항목을 유지할 선택 해제
- 현재 사용자가 적어도 하나 개의 투표 항목과 자동으로 시작 0 델타
SQL :
SELECT links.*, (SUM(votes.karma_delta)) AS karma
FROM links, votes
WHERE links.id = votes.link_id
GROUP BY votes.link_id
ORDER BY (SUM(votes.karma_delta) - 1)/POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
LIMIT 0, 100
최적화가 훌륭하지만, 지금은 지정된 사용자가 선택한 링크 karma_delta를 얻고 싶습니다.
을 나는 – Franz