MySQL选择与某个记录无关的记录

时间:2011-10-31 20:28:52

标签: mysql sql

好的,对不起,如果这是一个转贴,我真的不知道如何说出我正在寻找的东西来真正搜索它。

我有3张桌子:

Amenities:
AmenitiesID
Name

resort_amenities
ResortAmenitiesID
ResortID
AmenityID

resorts
ResortID
ResortName
and so on...

我正在处理将amenties链接到度假村的代码,并保存在resort_amenities中。

我想要的是有一个jQuery模式对话框,其中提供了设施表中的所有设施,这些设施尚未与该度假村相关联。

现在在我的ajax调用中,我传递了度假村id,用于某处的sql。

我相信我需要一个工会,但几年前从未在学校里建立过一个工会。

由于

2 个答案:

答案 0 :(得分:2)

因此,对于特定的度假胜地,您需要与该度假村无关的设施:

SELECT DISTINCT * -- get all those Amenities
FROM Amenities
WHERE NOT EXISTS ( -- that we can't find a counter-example for
  SELECT AmenitiesID 
  From resort_amenities 
  WHERE ResortID = <the resort id>
  AND Amenities.AmenitiesID = resort_amenities.AmenitiesID
)

这是S = S1 - S2的集合减法,其中S1是所有便利设施的集合,S2是已与该度假村相关联的便利设施。

答案 1 :(得分:0)

如果我了解您的需求,您可以尝试:

SELECT * FROM Amenities a
INNER JOIN resort_amenities ra
    ON a.AmenitiesID = ra.AmenityID
WHERE ra.ResortID <> your_resort_id

SELECT * FROM Amenities a
LEFT JOIN resort_amenities ra
    ON a.AmenitiesID = ra.AmenityID
WHERE ra.ResortID IS NULL 
   OR ra.ResortID <> your_resort_id