나는 시스템을 구축하고있어 합류와 함께 열 고유 선택은 별개의 결과를 반환하지 않은 다음과 같은 테이블이 있습니다 : 포스트 그레스 :
- 노래
- 방송
- 사용자
사용자는 그래서이 역을, 다음 방송을 통해 그들에 ngs.
나는 그들이 따르는 방송국을 기반으로 한 사용자를 위해 "피드"를 제작하고 있습니다.
SELECT DISTINCT ON ("broadcasts"."created_at", "songs"."id") songs.*
FROM "songs"
INNER JOIN "broadcasts" ON "songs"."shared_id" = "broadcasts"."song_id"
INNER JOIN "stations" ON "broadcasts"."station_id" = "stations"."id"
INNER JOIN "follows" ON "stations"."id" = "follows"."station_id"
WHERE "follows"."user_id" = 2
ORDER BY broadcasts.created_at desc
LIMIT 18
당신은 내가 둘은 같은 노래 것을 방송 한 두 스테이션 다음 거니까 무슨 일이 일어나고 중복 노래지고있어, 여기에서 볼 수 있듯이 :
을 여기
는 쿼리의주 : shared_id는 id와 같습니다.
내 질문 : 이 쿼리는 ID (또는 shared_id)를 기반으로 고유 한 노래 만 반환하도록 어떻게 수정합니까?
''SELECT '에''broadcasts "."created_at "'를 반환하면 어떻게됩니까? –
변화가 없습니다. 단지 그 값을 돌려주었습니다. –
죄송합니다. 첫 번째 코멘트에 추가해야합니다. 반환 된 created_at는 모든 행에서 고유합니까? –