За последние 24 часа нас посетили 151245 программистов и 2185 роботов. Сейчас ищут 1166 программистов ...

Поиск товаров с фильтрами

Тема в разделе "MySQL", создана пользователем illusha, 28 апр 2012.

  1. illusha

    illusha Активный пользователь

    С нами с:
    28 апр 2012
    Сообщения:
    2
    Симпатии:
    0
    Решил сделать поиск с фильтрами на сайте...

    В БД есть 2 таблицы:
    products (products_id, products_name)
    products_to_options (products_id, options_id)

    Допустим содержимое последней такое: (опции привязанные к товарам)

    (1, 20);
    (1, 21);
    (1, 22);
    (2, 20);
    (2, 21);
    (3, 22);

    Естественно кол-во этих опций, привязанных к товару может быть любое...
    Цель: вывести список products_id в которых будет заданный список options_id одновременно.

    сделал запрос типа:

    SELECT p.products_id FROM products p, products_to_options p2o WHERE p.products_id = p2o.products_id AND p2o.options_id IN ('20','21','22') GROUP BY p.products_id HAVING COUNT(*) = 3

    Отображает правильно! Но какие то непонятные чувства внутри - что сделал криво!)
    Кто нибудь сталкивался с такими фильтрами - и может поделитесь опытом?Хочу узнать правильно ли я сделал, и какие есть другие способы реализации данной задачи? Спасибо.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.132
    Симпатии:
    1.251
    Адрес:
    там-сям
    Нормально сделал. Можно переписать на использование JOIN, суть от этого не изменится.
     
  3. illusha

    illusha Активный пользователь

    С нами с:
    28 апр 2012
    Сообщения:
    2
    Симпатии:
    0
    Согласен, я тоже пробывал JOIN, суть не изменилась , поэтому вернул текущий вариант так как больше привык к такому..) Спасибо за ответ!