2017-01-01 3 views
1

私はCourse Tableを持っています。これは、すべてのユーザーが関連するコースを選択するのによく使用され、CourseUserMapping Tableに保存されています。今私の必要条件は、course Tableで選択しなかったすべてのコースを表示し、選択したコースリストを非表示にすることです。
courseusermappingテーブルのどのコースのユーザーがコーステーブルにマッピングされていないかを表示する方法

select c.* from Course c full outer join CourseUserMapping cum on c.CID = cum.CID 
where c.CID is NULL Or cum.CID is NULL and cum.UserID='u3' 

上記のクエリが期待どおりに機能していません。その後、

select c.* 
from Course c 
left join CourseUserMapping cum 
    on c.CID = cum.CID and 
     cum.UserID = 'u3' 
where cum.CID is NULL 

LEFT JOIN上記すべてのコースを保持し、かつ:より良い

は私が絵

enter image description here

+0

「CID、CourseUserMappingから別のCIDを選択してください」というコースからCID、CourseNameを選択するようにしてください。 –

+0

@KraangPrime:UserIDに基づいて取得する方法 – user6503334

+0

申し訳ありませんが、あなたの質問は間違っています。ティムの解決策は正しいです。 –

答えて

1

変更LEFT JOINに参加し、WHERE句を変更を作成し理解しますどのユーザーにもマッピングされていないコースのみを保持します。これは条件where cum.CID is NULLに含まれています。

+0

その動作していない結果にCourseUserMapping に参加左このクエリーは私のために働いています 'select * from CID where in courseusermapping from userus = 'u3') ' – user6503334

+0

を示さないCourse.CID = CourseUserMapping.CID Course.CIDない(CourseUserMappingから別個のCIDを選択)で ' – user6503334

+0

@ user6503334編集をやり直してください。 –

関連する問題