나는 모든 에 속하는 모든 PollOptions
에서 모두 Votes
을 포함하는이 SQL 쿼리를 가지고 있습니다. 이 잘 작동하지만 지금은 최신 Polls
반환하는 페이지 매김을 구현하려면. 나는이처럼하려고 노력 :하위 쿼리로 내림차순 정렬?
SELECT offset_polls.id AS pollId, offset_polls.title, poll_options.id AS pollOptionId, text, vote_count
FROM (
SELECT * FROM polls ORDER BY id DESC LIMIT 10 OFFSET 0
) as offset_polls
JOIN poll_options ON poll_options.poll_id = offset_polls.id
LEFT OUTER JOIN (
SELECT poll_option_id, COUNT(poll_option_id) as vote_count
FROM votes
GROUP BY poll_option_id
) as votesCount ON poll_options.id = votesCount.poll_option_id
ORDER BY offset_polls.id desc
문제는 첫 번째 하위 쿼리 BY ORDER 무시한다는 것입니다 - 예 저는이를 위해 SQL 표준 알고 있습니다. 내가 한 것처럼 행이 반환되지 않습니다. 첫 번째 하위 쿼리에서 ORDER BY
을 사용하지 않으면 전체 쿼리가 '의도 됨'으로 작동하지만 Polls
은 물론 가장 오래된 쿼리에서 최신 쿼리로 반환됩니다. SQL에서 어떻게 해결할 수 있습니까? 나중에 모든 행을 가져와 페이지 매김을 할 수는 있지만 비효율적 일 것이라고 확신합니다 (Node.js에서 작업). 의도 한대로
편집
위의 쿼리가 작동합니다. 'bug'는 데이터베이스에 파일을 파묻 었습니다.
샘플 데이터 + 예상 된 결과 대 현재 결과를 제공 할 수 있습니까? – sstan
@sstan 이것은 샘플 데이터입니다 : [pastebin] (http://pastebin.com/0VWLeXNg). 앞서 말했듯이, 위 쿼리를 실행하면 0 행을 얻습니다. 10 ('LIMIT 10') 가장 최근의 ('ORDER BY id DESC') 투표 옵션을 반환하는 것을 제외하고는 다음과 같은 것을 돌려 주길 바란다. (http://pastebin.com/rvuFhLFF) 및 집계 된 표. 하지만 'ORDER BY'를 사용하여 첫 번째 하위 쿼리에서 최근 설문 조사 10 개를 필터링하는 것 외에는 그 방법을 알지 못합니다. –