MySQL:加入多个表

时间:2016-04-28 13:25:17

标签: mysql sql join inner-join

我有以下查询我试图在2个条件下加入2个表('Industry','Country'),但它给了我以下错误

  

错误代码:1054。'on clause'

中的未知列'i.id'

有谁知道我应该怎么解决这个问题?

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 - consultant_profile_id,industry_id
  • consultant_profile - id,user_id

1 个答案:

答案 0 :(得分:1)

既然你还没有提供任何sql小提琴 你可以从我的那个开始:

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

如果您将一些数据添加到该小提琴中,我们可以更深入地讨论