シフトが割り当てられていないドライバーを表示することになっています。ドライバー番号の主キーを使用してテーブルに参加しました。これが私のコードです。
select distinct dr_drvname
from driver,shift
where dr_drvnum <> sh_drvnum;
修飾されていないものを示すために、コードでドライバー番号を等しくしないようにしましたが、このコードはすべてのドライバーを表示します。
あなたのテーブル構造を推測すると、次のようなものが必要だと思います
select d.dr_drvname
from driver d
where not exists( select 1
from shift s
where d.dr_drvnum = s.sh_drvnum );
ジャスティンの答えとは対照的に、結合を使用したバージョンは次のとおりです。
SELECT d.dr_drvname
FROM driver d
LEFT JOIN shift s
ON s.sh_drvnum = d.dr_drvnum
WHERE s.sh_drvnum IS NULL
FROM
一般に、暗黙的結合構文(コンマ区切り句)を使用するのではなく、常に明示的に結合を指定することをお勧めします。
(しかし、なぜ列に-short-テーブルプレフィックスを付けるの'dr_'
ですか?最初のテーブルに含めますか?とにかく少し長いプレフィックスを付けているように見える場合:'drv'
?)