ユーザー、レストラン、レビューという名前の 3 つのテーブルがあります。ここで、ユーザーの id (主キー) は、レストランでは外部キー uid として機能し、レビュー テーブルでは、rate_to はレストランの uid に関連付けられ、rate_by はユーザー テーブルの id に関連付けられます。すべてのレストランがレストラン テーブルのユーザーに属しているが、レビュー テーブルの avg_rate で並べ替えたいとします。これには、このクエリを使用しました。
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 でソートされたレストランテーブルのすべての異なるレストランが必要です。
助けてください。