0

テーブルの従業員とコースのデータを含むビューを作成しました。このビューを使用すると、すべての従業員が受講したコースを簡単に見つけることができますが、(従業員の役職に応じて) 受講していない必須コースを知りたいです。たとえば、役職が「cle」のすべての新入社員は、データ保護コース (「data」) を受講する必要があります。「データ」コースに参加していない役職「cle」のすべての従業員を返すにはどうすればよいですか?

'!= 'data'' に似たものが必要だと思います。実際には、'cle' のレコードを持っているが、'data' のレコードを持っていないすべての従業員を返し、他の従業員はすべて無視します。

誰かがこれを理解してくれることを願っていますか?

4

2 に答える 2

1

次のようなことを試してください:

SELECT
    *
FROM
    employee e
LEFT JOIN
    courses c
ON  
    e.employeeID = c.employeeID and
    c.courseType = 'data'
WHERE
    e.jobTitle = 'cle' and
    c.employeeID is null

テーブル構造を提供していないため、列名などを確認する必要がありますが、アイデアはわかります。

于 2013-09-30T12:38:55.003 に答える
1

あなたのタイトルは答えを示唆していますNOT EXISTS

SELECT e.* 
FROM dbo.Employee e
WHERE [job title] = 'cle'
AND NOT EXISTS
(
    SELECT 1 FROM dbo.Courses c
    WHERE c.EmployeeID = e.EmployeeID
     AND  c.ProtectionCourse = 'data'
)

すべてのテーブルと列を想定していることに注意してください。しかし、あなたはアイデアを得る必要があります。

于 2013-09-30T12:27:25.493 に答える