계정, 게시물 및 사용자가 좋아하는 게시물에 대한 정보를 보유하고있는 데이터베이스가 있습니다.하나의 열을 두 개의 테이블에 결합하십시오.
AccountData
id || username
PostData
id || text || accountid
LikesDislikesData
liked(bool) || accountid || postid
DB에서 특정 데이터가 필요하므로보기가 설정되어 있습니다.
SELECT trippin.PostData.id, trippin.AccountData.username, trippin.PostData.posttext,
trippin.CategoryData.categoryname, trippin.PostData.__createdat as CreatedAt,
SUM(CASE WHEN likes.liked = 1 THEN 1 ELSE 0 END) as Likes,
SUM(CASE WHEN likes.liked = 0 THEN 1 ELSE 0 END) as DisLikes
FROM trippin.PostData
INNER JOIN trippin.AccountData ON trippin.PostData.accountid = trippin.AccountData.id
INNER JOIN trippin.CategoryData ON trippin.CategoryData.id = trippin.PostData.categoryid
LEFT OUTER JOIN trippin.LikesDislikesData likes ON likes.postid = trippin.PostData.id
GROUP BY (trippin.AccountData.username), (trippin.PostData.posttext), (trippin.PostData.id), (trippin.categorydata.categoryname), (trippin.PostData.__createdat)
문제는 내가 추가 한 시간이 (likes.accountid = trippin.AccountData.id), 행이 중 중복 또는 출력 그냥 잘못되는 조인 있다는 것입니다 : 여기에 내가 사용하고있는 코드입니다.
디자인 문제 일지 모르지만 확실하지 않고 정확한 문제를 해결하는 데 도움이되는 것을 찾을 수 없습니다.
기본적으로 각 게시물은 사용자가 만듭니다. 그런 다음 각 게시물은 다른 사용자가 좋아하거나 싫어하는 항목입니다. 내 애플 리케이션에 전달할 수 있도록보기 내부에이 모든 데이터가 필요합니다.
LikesDislikesData = 하나 또는 싫어하는 것 중 하나의 행을 가정하고 있습니다 ... 그래서 주어진 postID에 대해이 테이블에 많은 행이 있습니까? 이것이 올바른 가정이고 방금 좋아하는 것을 얻으려는 경우 LikesDislikesData의 subselect에 가입하여 accountID별로 개수 및 그룹을 만듭니다 (따라서 하나의 accountID 당 하나의 행을 부여 함) – Twelfth
어떤 데이터를 선택 하시겠습니까? ? 당신의 결과에서 하나의 행이 하나 같이/싫어하는가? 또는 좋아하는 사람이없는 모든 게시물을 선택 하시겠습니까? – Koryu
모든 게시물을 원합니다. 나는 또한 얼마나 많은 likes (좋아 = true)와 싫어하는 (좋아 = false) 각 게시물의 수를 가지고 열 싶어요. 아마 내가 잘못 생각하고 있습니다. 그래서 예, 나는 같은 추측을 한 번 이상 가질 것입니다. 그것을 할 다른 방법이 있습니까? – user3007447