RSS-подписка

RSS-лента

Новые статьи

Последние комментарии


Получать обновления на эл. почту

Ваш e-mail:

Рассылка новостей от Loco

MySQL: Как выбрать из таблицы строки, удовлетворяющие одновременно двум значениям колонки?

MySQL: Как выбрать из таблицы строки, удовлетворяющие одновременно двум значениям колонки? MySQL запрос выборки из таблицы всех строк, которые одновременно относятся и к одному значению поля категории, и к другому значению этого поля.

Потребовалось для магазина на Opencart сделать вывод коллекции, а в ней вывести все категории, которые к этой коллекции относятся, вместе с товарами этой коллекции.

В итоге дело сводится к запросу выборки из таблицы всех строк, которые одновременно относятся и к данной коллекции (коллекция это тоже категория), и к конкретной категории товаров.

Например таблица

----------------------------
id_article | id_param
     1           15
     2           15
     2           16
     3           21
----------------------------

Нужно ввыбрать все товары у которых есть параметр 15 и параметр 16

Делается всё таким запросом

select A.*
  from article_param A, article_param B
 where A.id_article=B.id_article and A.id_param=15 and B.id_param=16

Нужно в таблице создать составной уникальный первичный ключ (id_param, id_article). Это экономит место и заодно обеспечивает уникальность конкретного параметра для конкретного article

Для случая, когда во время разработки неизвестно, сколько параметров будет в запросе, но известно в момент выполнения то запрос будет такой:

select id_article
  from article_param
 where id_param in(15,16,17)
 group by id_article
 having count(1)=3

Где 3 - количество искомых атрибутов

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.