我有以下查询,我试图在 2 个条件下连接 2 个表(' Industry' 、 'Country' ),但它给出了以下错误
Error Code: 1054. Unknown column 'i.id' in 'on clause'
有人知道我应该如何解决这个问题吗?
SELECT c.name AS country_name, i.name as industry_name, num_projects, num_consultants, admin_rating
FROM industry i, country c
JOIN (SELECT pc.country_id, pi.industry_id, COUNT(p.id) AS num_projects
FROM project p, project_country pc, project_industry pi
where p.id = pc.project_id and pi.project_id=p.id
GROUP BY pc.country_id,pi.industry_id) x ON x.country_id = c.id and x.industry_id=i.id
JOIN (SELECT u.country_id,ie.industry_id, COUNT(u.id) AS num_consultants
FROM user u, consultant_profile, industry_experience ie
WHERE u.is_active = 1 AND u.type = 0 and
ie.consultant_profile_id= consultant_profile.id
and u.id= consultant_profile.id
GROUP BY u.country_id,ie.industry_id) y ON y.country_id = c.id and y.industry_id = i.id order by num_projects DESC limit 20;
编辑表结构如下:
- 行业 - ID
- project_industry - Industry_id、project_id
- industry_experience - coach_profile_id、industry_id
- consultant_profile - id、user_id
最佳答案
因为你还没有提供任何sql fiddle 你可以从我的开始:
http://sqlfiddle.com/#!9/6c0569/1
SELECT pc.country_id, pi.industry_id,
COUNT(p.id) AS num_projects,
COUNT(u.id) AS num_consultants
FROM project p
INNER JOIN project_country pc
ON p.id = pc.project_id
INNER JOIN project_industry pi
ON pi.project_id=p.id
INNER JOIN `user` u
ON u.is_active = 1 AND u.type = 0
and u.country_id = pc.country_id
INNER JOIN industry_experience ie
ON u.id = ie.consultant_profile_id
AND ie.industry_id = pi.industry_id
GROUP BY pc.country_id, pi.industry_id
如果您将一些数据添加到该 fiddle 中,我们可以更深入地讨论
关于MySQL:连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916104/