2012-02-06 12 views
0

以下のMYSQL文は、履歴書にプロファイルが使用されているインスタンスの数を列挙したものです。MYSQLのクエリ結果に重複する列の問題

ただし、profile_id列を2回返します。 2番目のインスタンスでは、プロファイルがどのレジュームでも使用されない場合、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 *を使用していることから、あなたはそれが二回返さ取得、resumesであなたのprofilesテーブルの両方にし、あなたのサブクエリに存在します。

代わりに、適切なテーブル接頭辞を含めて、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 = ?