Есть таблица с полями product_id, key, value
Как выбрать из таблицы значения product_id где:
1) key = emkost AND value = 510
2) key = tok AND value = 54
То есть, получить product_id товара, который подходит и по первому и по второму условия. Уникальный значений нет.
Собственно запрос вида
SELECT * FROM `hukelUUkhydjem_ms2_product_options`
WHERE `key` = 'emkost' AND value = 54 OR
`key` = 'tok' AND value = 510
GROUP BY product_id
Выдает мне 2 параметра, а мне нужно 1.
Пример таблицы
product_id key value
515 emkost 510
515 tok 54
516 emkost 510
516 tok 56
В данном примере согласно запросу выше мы должны получить значение 515, так как оно подходит по двум параметрам. А 516 подходит только по одному.
Если Вам нужно выполнение любого из двух условий, то нужно всего лишь правильно расставить скобки
SELECT DISTINCT
product_id
FROM
`product_options`
WHERE
(`key` = 'emkost' AND value = 510) OR
(`key` = 'tok' AND value = 54)
Если же Вам нужно найти только те product_id, для которых выполняется оба условия, то немного сложнее
SELECT
prod1.product_id
FROM
`product_options` prod1
LEFT JOIN `product_options` prod2 ON (
prod1.product_id = prod2.product_id
)
WHERE
prod1.`key` = 'emkost' AND prod1.value = 510 AND
prod2.`key` = 'tok' AND prod2.value = 54
Ну и тест http://sqlfiddle.com/#!9/7f274c/4
Возможно как-то так:
SELECT `product_id`
FROM (SELECT `product_id`, COUNT(1) AS `cnt`
FROM `table`
WHERE (`key`, `value`) IN (('emkost', 510), ('tok', 54))
GROUP BY `product_id`
) tmp
WHERE tmp.cnt > 1
SELECT * FROM `hukelUUkhydjem_ms2_product_options`
WHERE (`key` = 'emkost' AND value = 54) OR
(`key` = 'tok' AND value = 510)
GROUP BY product_id
можно ещё поставить LIMIT 1, если строго 1 ответ нужен, а так скобки в данном запросе все решают
Сборка персонального компьютера от Artline: умный выбор для современных пользователей