인프런 커뮤니티 질문&답변
질문 있습니다.!
작성
·
187
0
DB 쿼리 관련 질문입니다.
예시는 해시태그 검색 관련 시퀄라이즈 쿼리입니다.
SELECT `Post`.*, `Hashtags`.`id` AS `Hashtags.id`, `Hashtags`.`content` AS `Hashtags.content`, `Hashtags`.`createdAt` AS `Hashtags.createdAt`, `Hashtags`.`updatedAt` AS `Hashtags.updatedAt`, `Hashtags->PostHashtag`.`createdAt` AS `Hashtags.PostHashtag.createdAt`, `Hashtags->PostHashtag`.`updatedAt` AS `Hashtags.PostHashtag.updatedAt`, `Hashtags->PostHashtag`.`HashtagId` AS `Hashtags.PostHashtag.HashtagId`, `Hashtags->PostHashtag`.`PostId` AS `Hashtags.PostHashtag.PostId`, `User`.`id` AS `User.id`, `User`.`nickname` AS `User.nickname`, `Images`.`id` AS `Images.id`, `Images`.`src` AS `Images.src`, `Images`.`createdAt` AS `Images.createdAt`, `Images`.`updatedAt` AS `Images.updatedAt`, `Images`.`PostId` AS `Images.PostId`, `Comments`.`id` AS `Comments.id`, `Comments`.`content` AS `Comments.content`, `Comments`.`createdAt` AS `Comments.createdAt`, `Comments`.`updatedAt` AS `Comments.updatedAt`, `Comments`.`UserId` AS `Comments.UserId`, `Comments`.`PostId` AS `Comments.PostId`, `Comments->User`.`id` AS `Comments.User.id`, `Comments->User`.`nickname` AS `Comments.User.nickname`, `Likers`.`id` AS `Likers.id`, `Likers->Like`.`createdAt` AS `Likers.Like.createdAt`, `Likers->Like`.`updatedAt` AS `Likers.Like.updatedAt`, `Likers->Like`.`PostId` AS `Likers.Like.PostId`, `Likers->Like`.`UserId` AS `Likers.Like.UserId`, `Retweet`.`id` AS `Retweet.id`, `Retweet`.`content` AS `Retweet.content`, `Retweet`.`createdAt` AS `Retweet.createdAt`, `Retweet`.`updatedAt` AS `Retweet.updatedAt`, `Retweet`.`UserId` AS `Retweet.UserId`, `Retweet`.`RetweetId` AS `Retweet.RetweetId`, `Retweet->User`.`id` AS `Retweet.User.id`, `Retweet->User`.`nickname` AS `Retweet.User.nickname`, `Retweet->Images`.`id` AS `Retweet.Images.id`, `Retweet->Images`.`src` AS `Retweet.Images.src`, `Retweet->Images`.`createdAt` AS `Retweet.Images.createdAt`, `Retweet->Images`.`updatedAt` AS `Retweet.Images.updatedAt`, `Retweet->Images`.`PostId` AS `Retweet.Images.PostId` FROM (SELECT `Post`.`id`, `Post`.`content`, `Post`.`createdAt`, `Post`.`updatedAt`, `Post`.`UserId`, `Post`.`RetweetId` FROM `Posts` AS `Post` WHERE ( SELECT `PostHashtag`.`HashtagId` FROM `PostHashtag` AS `PostHashtag` INNER JOIN `Hashtags` AS `Hashtag` ON `PostHashtag`.`HashtagId` = `Hashtag`.`id` AND `Hashtag`.`content` = '노드' WHERE (`Post`.`id` = `PostHashtag`.`PostId`) LIMIT 1 ) IS NOT NULL ORDER BY `Post`.`createdAt` DESC LIMIT 10) AS `Post` INNER JOIN ( `PostHashtag` AS `Hashtags->PostHashtag` INNER JOIN `Hashtags` AS `Hashtags` ON `Hashtags`.`id` = `Hashtags->PostHashtag`.`HashtagId`) ON `Post`.`id` = `Hashtags->PostHashtag`.`PostId` AND `Hashtags`.`content` = '노드' LEFT OUTER JOIN `Users` AS `User` ON `Post`.`UserId` = `User`.`id` LEFT OUTER JOIN `Images` AS `Images` ON `Post`.`id` = `Images`.`PostId` LEFT OUTER JOIN `Comments` AS `Comments` ON `Post`.`id` = `Comments`.`PostId` LEFT OUTER JOIN `Users` AS `Comments->User` ON `Comments`.`UserId` = `Comments->User`.`id` LEFT OUTER JOIN ( `Like` AS `Likers->Like` INNER JOIN `Users` AS `Likers` ON `Likers`.`id` = `Likers->Like`.`UserId`) ON `Post`.`id` = `Likers->Like`.`PostId` LEFT OUTER JOIN `Posts` AS `Retweet` ON `Post`.`RetweetId` = `Retweet`.`id` LEFT OUTER JOIN `Users` AS `Retweet->User` ON `Retweet`.`UserId` = `Retweet->User`.`id` LEFT OUTER JOIN `Images` AS `Retweet->Images` ON `Retweet`.`id` = `Retweet->Images`.`PostId` ORDER BY `Post`.`createdAt` DESC;
<< 서버에 찍힌 쿼리 로그인데
-> : 화살표는 무엇을 의미하나요? 낯서네요 뭔가 저 문법은 ...
그리고 그 Retweet.~~ 이 부분 //리트윗을 하고 리트윗된 해시태그를 검색해도 retweet~의 쿼리들은 다 null로 뜨던데?
왜 넣어주신지 알 수 있을까요?
답변 1
0
->는 SQL 문법이 아니라 그냥 문자입니다. 닉네임을 '게시글->유저'로 지은 거나 다름 없습니다.
Retweet이 제대로 안 뜨는 건 문제가 있는 상황입니다.




