Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] SQL-запрос: выборка товаров по атрибутам


Recommended Posts

Что-то сообразить не могу, как написать запрос на выборку всех продуктов, которые имеют атрибуты со значениями "текст1", "текст2", "текст3" одновременно.

 

Надіслати
Поділитися на інших сайтах


WHERE text IN('text1', 'text2'.....)

не совсем то. 

Например, у нас среди товаров компьютеры. Есть компьютеры с процессором i3, i5, i7, с ОЗУ 1 Гб, 2 Гб, 4 Гб.

 

Комп       |   Атрибут   |   Значение

-----------------------------------

Комп1     |   Проц       |   i3

Комп1     |   ОЗУ        |   1 Gb

Комп2     |   Проц       |   i3

Комп2     |   ОЗУ        |   2 Gb

Комп3     |   Проц       |   i5

Комп3     |   ОЗУ        |   1 Gb

Комп4     |   Проц       |   i3

Комп4     |   ОЗУ        |   1 Gb

 

Нужно выбрать все компы, например, c Проц i3 и ОЗУ 1 Gb, т.е. в данном случае Комп1 и Комп4.

Змінено користувачем Master2KAZ
Надіслати
Поділитися на інших сайтах


Вот с двумя значениями я делал так:

 

SELECT a.product_id FROM oc_product_attribute a, oc_product_attribute b

WHERE  a.product_id=b.product_id and a.text='i3' and b.text='1 Gb';

 

А как сделать, когда этих атрибутов ( кроме проца и озу) много - это вопрос.

 

Или есть задумка другого варианта - сделать сначала запрос на выборку всех компов с проц 'i3', а потом запрос на выборку компов с ОЗУ 1 Гб.

Но вот не знаю, как вытащить общие строки из этих двух запросов.

Надіслати
Поділитися на інших сайтах


Кажется нашел ответ.

 

SELECT `product_id` FROM `oc_product_attribute` WHERE `text` IN('100мгц','123') GROUP BY `product_id` HAVING COUNT(DISTINCT `text`)=2

 

Соответственно, если 5 атрибутов, то и count должен быть равен 5.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.