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 MySQL и PHP: Вычисление возраста (количество лет) по дате рождения (20.06.2017)
- 0 MySQL: проверить содержится ли значение в поле столбца (в столбце хранится строка значений через запятую) (22.05.2014)
- 0 MySQL: выбираем данные за период времени (за текущий месяц, за эту неделю..) (30.10.2013)
- 0 Php функция implode внутри запроса SELECT к MySQL. (02.09.2013)
- 0 Устанавливаем и настраиваем WampServer (аналог MAMP в Mac и возможная замена Denwer'у) на Windows (22.03.2013)
- 0 Полезные команды для вебразработчика (20.11.2017)
- MySQL: Как выбрать из таблицы строки, удовлетворяющие одновременно двум значениям колонки? (06.04.2017) ← вы тут
- MySQL ошибка: Unknown column 'table_name.id' in 'on clause' (06.04.2017)
- MySQL запрос приджойнивания с INNER JOIN 2-х таблиц к основной (18.11.2016)
- Как корректно вставить в MySQL текст с кавычками, используя PHP? (06.12.2012)
- Команды для сron job (для планировщика Cron на хостинге) (29.08.2012)
- Использование DISTINCT в SQL-запросах для исключения повторяющихся данных применительно к фреймворку CodeIgniter. (18.06.2012)
- Yii: MTreeView extension - расширение для формирования древовидного меню + немножко loco-магии (12.05.2012)
- ADD CONSTRAINT в MySQL (Ограничения внешних ключей) (24.08.2011)
- MySQL немного о JOIN'ах (24.08.2011)
- Выборка дней рождений за N ближайших дней в MySQL (24.08.2011)
- Конвертирование БД MySQL из кодировки latin1 или cp1251 и всех её данных в базу с данными в UTF-8 (24.08.2011)