2017-03-23 7 views
0

次のクエリを実行して、あるテーブルを別のテーブルから更新しようとしています。日付と電子メールアドレスは機能し、実行されますが、参照テーブルからSubject_1を取得するために使用しているネストされたクエリでは使用できません。私は間違って何をしていますか?このクエリでフィールドをルックアップで更新しないのはなぜですか?

SELECT 
    FirstRegistered As SignUpdate, 
    (SELECT Subj_ClusName FROM tblSubjectLookup INNER JOIN PAD_ApplicantLost2000 ON tblSubjectLookup.Subj_Name=PAD_ApplicantLost2000.raw_subj_interest_1) AS Subject_1, 
    Email_Address 
FROM PAD_ApplicantLost2000 

元テーブル、PAD_ApplicantLost2000は、例えば、「生物学」を含む「生被験者」列を有します。別のテーブルtblSubjectLookupにはすべての科目のコードがありますので、Subj.Nameには「Biology」があり、Subj_ClusNameには「B1」があります。これはターゲットテーブルに移動する必要があります。ただし、ターゲットテーブルのSubject_1フィールドには値が設定されません。

私は間違っていますか?

答えて

1

テーブルを再度結合する代わりにWHERE句を使用するだけではどうですか。私はまた、LIMIT 1を追加して、ただ1つの値が返されるようにしました。

SELECT 
    FirstRegistered As SignUpdate, 
    (SELECT Subj_ClusName FROM tblSubjectLookup WHERE tblSubjectLookup.Subj_Name = PAD_ApplicantLost2000.raw_subj_interest_1 LIMIT 1) AS Subject_1, 
    Email_Address 
FROM PAD_ApplicantLost2000 

もう1つ、おそらくより良い方法は、テーブルに直接参加することです。

SELECT 
    FirstRegistered As SignUpdate, 
    Subj_ClusName AS Subject_1, 
    Email_Address 
FROM PAD_ApplicantLost2000 
LEFT JOIN tblSubjectLookup ON tblSubjectLookup.Subj_Name = PAD_ApplicantLost2000.raw_subj_interest_1 
関連する問題