2012-02-06 3 views
0

아래 MYSQL 문은 이력서에 프로필이 사용되는 인스턴스 수를 나열하여 의도 한대로 작동합니다.MYSQL 쿼리 결과에 중복 열 문제

그러나 profile_id 열을 두 번 반환합니다. 프로파일이 어떤 이력서에서도 사용되지 않는 두 번째 인스턴스에서, profile_id는 값이 있더라도 NULL로 표시됩니다.

나는 DISTINCT를 쿼리에 추가 할 필요가 있을지 모르지만, 시도한 곳에서는 작동하지 않는다고 생각합니다.

의견을 보내 주시면 대단히 감사하겠습니다.

SELECT *, COALESCE(pc.postcount, 0) AS postcount 
    FROM profiles 
     LEFT JOIN (SELECT resumes.profile_id, COUNT(resumes.resume_id) AS postcount 
         FROM resumes 
         WHERE 1 
         GROUP BY resumes.profile_id) pc 
      ON pc.profile_id=profiles.profile_id 
    WHERE profiles.user_id = ? 

답변

1

profile_id 열은 SELECT *을 사용하고 있기 때문에, 당신이 그것을 두 번 돌려받을 모두 당신의 profiles 테이블과 resumes에 대한 귀하의 하위 쿼리에 존재합니다.

대신 적절한 표 접두사를 포함하여 SELECT에있는 모든 열을 명시 적으로 나열하십시오.

SELECT profiles.profile_id, ... 
+0

감사합니다! SELECT profiles.profile_id, profiles.name ...로 변경하면됩니다. – jsuissa

0

적절한 표 접두사가있는 SELECT의 모든 열을 나열하십시오.

다음은 시도해보십시오

SELECT profiles.*,pc.*, COALESCE(pc.postcount, 0) AS postcount 
    FROM profiles 
     LEFT JOIN (SELECT resumes.profile_id, COUNT(resumes.resume_id) AS postcount 
         FROM resumes 
         WHERE 1 
         GROUP BY resumes.profile_id) pc 
      ON pc.profile_id=profiles.profile_id 
    WHERE profiles.user_id = ?