Country
- Company
有一个1-n的关系.
Company
- Dish
有一段关系.
我需要根据各自区域设置中的计数从每个区域设置中获取Dishes,每个区域设置有100个结果.
到目前为止我有
SELECT dishes.title,
dishes.name,
dishes.id,
countries.locale
FROM countries
JOIN companies ON companies.`country_id` = countries.`id`
JOIN company_dish ON company_dish.`company_id` = companies.`id`
JOIN dishes ON company_dish.`dish_id` = dishes.`id`
GROUP BY dishes.`title`, countries.locale
ORDER BY ??? count_dishes_in_each_locale ?? DESC
Run Code Online (Sandbox Code Playgroud)
样本数据:
期望的输出:
我怎样才能做到这一点?
小智 2
尝试使用子请求...
你的申请 :
SELECT
dishes.title,
dishes.name,
dishes.id,
countries.locale,
countries_count.dishes_nb
FROM countries
JOIN companies ON companies.`country_id` = countries.`id`
JOIN company_dish ON company_dish.`company_id` = companies.`id`
JOIN dishes ON company_dish.`dish_id` = dishes.`id`
JOIN
({SubRequest}) countries_count ON countries_count.`country_id` = countries.`id`
ORDER BY
countries_count.dishes_nb DESC
Run Code Online (Sandbox Code Playgroud)
和子请求,按国家计数菜肴:
SELECT
countries.id AS country_id,
COUNT(company_dish.dish_id) AS country_dishes_nb
FROM countries
JOIN companies ON companies.country_id = countries.id
JOIN company_dish ON company_dish.company_id = companies.id
GROUP BY
country_id
Run Code Online (Sandbox Code Playgroud)
或按国家对每道菜进行计数:
你的申请 :
SELECT
dishes.title,
dishes.name,
dishes.id,
countries.locale,
countries_count.dishes_nb
FROM countries
JOIN companies ON companies.`country_id` = countries.`id`
JOIN company_dish ON company_dish.`company_id` = companies.`id`
JOIN dishes ON company_dish.`dish_id` = dishes.`id`
JOIN
({SubRequest}) countries_count ON countries_count.`country_id` = countries.`id`
AND countries_count.`dish_id` = dishes.`id`
ORDER BY
countries_count.dishes_nb DESC
Run Code Online (Sandbox Code Playgroud)
和子请求:
SELECT
countries.id AS country_id,
dishes.id AS dish_id,
COUNT(company_dish.dish_id) AS country_dishes_nb
FROM countries
JOIN companies ON companies.country_id = countries.id
JOIN company_dish ON company_dish.company_id = companies.id
JOIN dishes ON company_dish.dish_id = dishes.id) AS countries_count ON countries_count.country_id` = countries.`id`
GROUP BY
country_id, dish_id
Run Code Online (Sandbox Code Playgroud)
并在 {SubRequest} 中连接(替换)
归档时间: |
|
查看次数: |
97 次 |
最近记录: |