データベースに次のテーブルがあります。
ツーリスト- これが最初のテーブルです
Tourist_ID - primary key
name...etc...
追加料金
Extra_Charge_ID - primary key
Extra_Charge_Description
Amount
Tourist_Extra_Charges
Tourist_Extra_Charge_ID
Extra_Charge_ID - foreign key
Tourist_ID - foreign key
Tourist の名前と、この Tourist に属さないEXTRA_CHARGES テーブルのすべての料金を取得できるように、クエリを作成しました。
SELECT Tourist.Name,
EXTRA_CHARGES.Extra_Charge_Description,
EXTRA_CHARGES.Amount
FROM Tourist
CROSS JOIN EXTRA_CHARGES
WHERE Tourist.Tourist_ID= 86
AND NOT EXISTS
( SELECT 1
FROM TOURIST_EXTRA_CHARGES
WHERE TOURIST_EXTRA_CHARGES.Tourist_ID = Tourist.Tourist_ID
AND TOURIST_EXTRA_CHARGES.Extra_Charge_ID = EXTRA_CHARGES.Extra_Charge_ID
);
したがって、問題は、観光客がすべての extra_charges を持っている場合、クエリで行が返されないことです。しかし、extra_charges の有無に関係なく、旅行者の名前が必要です。しかし、私の場合、クロスの代わりに左結合を使用できません