我的数据库中有这些表:
游客- 这是第一张桌子
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 的姓名以及 EXTRA_CHARGES 表中不属于该 Tourist 的所有费用。
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 - 我的查询将不返回任何行。但无论他是否有额外费用,我都需要游客的姓名。但就我而言,我不能使用左连接而不是交叉