LINUX.ORG.RU

MySQL, многие-ко-многим, запрос

 many-to-many, ,


0

1

MySQL.

Имеется таблица restorant и таблица kitchen.

restorant: restorant_id, ....

kitchen: kitchen_id, ....

Между ними реализована связь многие ко многим через промежуточную таблицу - restorant_kitchen:

id

rest_id

kitch_id

Нужен следующий запрос: Выбрать из таблицы kitchen все кухни, которым НЕ сопоставлен заданный по restorant_id ресторан. Желательно с небольшими комментариями по логике, бился 3 часа, не смог написать, рассчитываю на помощь сообщества. :)

Приведу на всякий случай пример моего запроса, который выбирает из таблицы kitchen кухни, которым, наоборот, сопоставлен заданный по restorant_id ресторан: SELECT kitchen.* FROM restorant_kitchen,kitchen WHERE rest_id = 5 AND kitch_id=kitchen_id



Последнее исправление: hed_int (всего исправлений: 2)

Хз, я бы наверно так сделал:

SELECT kitchen_id FROM kitchen AS k WHERE not exist (
	SELECT 1 FROM restorant_kitchen WHERE rest_id = :restaurant_id AND kitch_id = k.kitchen_id
);

А за названия убил бы.

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

Хм, а вообще, кажется можно красиво сделать с LEFT JOIN выбирая NULL справа. Это я тоже не умею, покури маны.

Kalashnikov ★★★
()

Наркоман что ли?

«rest_id = 5» => «rest_id != 5»

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.