-1

次のテーブルがあります:

従業員 (empid,name,age)
予約 (bookingid,empid,cid)
車 (cid,name,type)。
内容はこんな感じです。

従業員 :

  1. emp1 、 A 、 32
  2. emp2 、 B 、 36
  3. emp3 , C , 25
  4. emp4 、 D 、 40
  5. emp5 、 E 、 45

予約:

  1. 1、emp1、car1
  2. 2 、 emp1 、 car3
  3. 3 、 emp1 、 car2
  4. 4 、 emp2 、 car2
  5. 5 、 emp3 、 car3
  6. 6 、 emp4 、 car1
  7. 7 、 emp4 、 car2
  8. 8 、 emp5 、 car3
  9. 9 、 emp5 、 car2
  10. 10 、 emp5 、 car1

車:

  1. car1 , one, 赤
  2. car2 、2、青
  3. car3、3、赤

これが私の質問です。赤ではない車を予約したすべての従業員の名前を返すクエリは何ですか?

編集済み
最初の質問でもっと具体的にすべきでした。
このリンク 2 つのテーブルを結合して、一致しない行のみを返すにはどうすればよいですか?
異なるテーブルの同じフィールドを比較することです。この投稿は、ユーザーが 2 つのテーブルの行を比較し、一致しないものを返す必要があることを明確に示しています。
しかし、それは私の場合ではありません。私のタイトルが示すように、クエリを実行して返された行を比較できるかどうかを知りたいです。
少なくとも 1 台の赤い車を予約していない従業員の名前を取得したいと考えています。テーブルの値を考慮すると、
従業員 1 と 5 はすべての車を予約しています。
従業員 3 は赤い車のみを予約し、
従業員 4 は赤と緑の車をそれぞれ 1 つずつ予約しました。
従業員 2 はグリーン車を予約しました。
ここで、従業員 2 の名前のみを返すクエリが何であるかが私の質問です。色。)

4

1 に答える 1

1
select DISTINCT e.Name from #Employee e
inner join #Booking b on e.EmpID = b.EmpID
where e.EmpID not in (
    select b.EmpID from #Booking b
    inner join #Cars c on b.CID = c.CID
    where [type] = 'red'
)
于 2016-02-29T19:42:09.247 に答える