Добрый вечер,уважаемые формучане. Прошу помощи в составлении запроса. Задача следующая: 1. Имеется след. таблица: 2. Нужно составить запрос таким образом, чтобы получить значение поля "property_id",которое соответствует нескольким значениям поля "amenities_id". Т.е. у меня массив со значениями "amenities_id". Например, в массиве у меня "16,11,7,10,17,18", я должен проверить значения поля "amenities_id",и получить соответствующий "property_id". В примере получается "property_id" = 1. Короче говоря,надо,чтобы выводился "property_id" для которого заданы точные значения поля "amenities_id". IN не подходит, т.к. он выводит "property_id" при любом соответствии. Грубо говоря,что-то типа такого (знаю,что не работает): SELECT * FROM `**********` WHERE `amenities_id` = 16 AND `amenities_id` = 11 AND `amenities_id` = 17 AND `amenities_id` = 10 AND `amenities_id` = 17 AND `amenities_id` = 18. Добавлено спустя 7 минут 38 секунд: Натолкните хотя бы на мысль,как отбирать значение первого поля по нескольким значениям второго.
Re: Получить значение поля,связанного с несколькими значения вместо AND тут нужен был OR но для таких случаев есть механизм WHERE `amenities_id` IN (10, 11, 18, 17)
Re: Получить значение поля,связанного с несколькими значения Пробовал.Работает не так,как нужно.Т.е. "property_id" будут выдаваться те,у которых любой из "amenities_id" есть в массиве,а мне надо,чтобы выдавался только тот,у которого ВСЕ "amenities_id" есть в массиве. Как бы логика И должна быть,а не ИЛИ.
Re: Получить значение поля,связанного с несколькими значения Мой запрос ничего не выводит,т.к. это логично,что он проверят оду запись на одновременное равенство нескольким значениям. Пробовал так: SELECT `property_id` , COUNT( * ) AS c FROM `*******************`WHERE `amenities_id`IN ( 10, 11, 16, 17, 18 ) GROUP BY 1 HAVING c =5 Но выводятся совсем другие "property_id" (310,377,...),а мне нужно в этом случае "property_id" 1
Re: Получить значение поля,связанного с несколькими значения можно же более визуально красивый запрос, тем-же IN только добавить в конце HAVING COUNT(DISTINCT amenities_id) = кол-ву элементов в IN З.Ы. вот выше почти прав, только из селекта выкини каунт и сделать дистинкт )
Re: Получить значение поля,связанного с несколькими значения Спасибо большое.Идею понял.Буду разбираться,а то опыт с MySQL не очень большой и такой запрос вызвал затруднения...