사용자, 레스토랑, 리뷰라는 3 개의 테이블이 있습니다. 여기서 사용자의 id (프라이 머리 키)는 레스토랑에서 외래 키 uid 역할을하며 리뷰 테이블에서 rate_to는 레스토랑의 uid와 연결되며 rate_by는 사용자 테이블의 id와 연결됩니다. 모든 레스토랑을 식당 테이블의 해당 사용자에게 속하게하고 리뷰 테이블에서 avg_rate로 정렬하도록합니다. 나는 이것을 위해이 쿼리를 사용했다.mysql에서 join으로 group by를 사용할 때 적절한 결과를 얻지 못합니다.
SELECT `Restaurant`.`id`, `Review`.`avg_rating`, `Review`.`rate_to`
FROM `users` AS `User`
LEFT JOIN `reviews` AS `Review` ON (`User`.`id` = `Review`.`rate_to`)
LEFT JOIN `restaurants` AS `Restaurant` ON (`User`.`id` = `Restaurant`.`uid`)
WHERE `User`.`type` = '0' AND `User`.`isdeleted` = '0'
GROUP BY `Review`.`rate_to` ORDER BY `Review`.`avg_rating` DESC
하지만이 사용하고 때 나에게 리뷰 테이블에 항목이 만 레스토랑을 제공하지만, 리뷰 테이블에 avg_rate으로 분류하여 내가 레스토랑 테이블의 모든 별개의 레스토랑을 원한다.
도와주세요.
참조 키가 혼란 스럽습니다. review (rate_to)는 대중 음식점 (uid)을 참조 (id)합니다. 완벽한 테이블 구조를 제공 할 수 있습니까? – chetan