MySQL Выбрать записи, не относящиеся к определенной записи - PullRequest
1 голос
/ 01 ноября 2011

Хорошо, извините, если это репост, я действительно не знаю, как сказать, что я ищу, чтобы действительно его найти.

У меня есть 3 таблицы:

Amenities:
AmenitiesID
Name

resort_amenities
ResortAmenitiesID
ResortID
AmenityID

resorts
ResortID
ResortName
and so on...

Я работаю над кодом, который связывает удобства с курортом и сохранен в resort_aferences.

Я хочу, чтобы модальное диалоговое окно jQuery отображало все удобства из таблицы удобств, которые еще не связаны с этим курортом.

Прямо сейчас в своем вызове ajax я передаю идентификатор курорта, который будет использоваться где-то в sql.

Я считаю, что мне нужен профсоюз, но я никогда не создавал его вне школы.

Спасибо

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Таким образом, вы хотите, для определенного курорта, набор удобств, не связанных с этим курортом:

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 - набор удобств, которые уже связаны с этим курортом.

0 голосов
/ 01 ноября 2011

Если я понимаю, что вам нужно, вы можете попробовать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...