спасибо,
123456! вроде в правильном направлении мысль, но немного не то!
смотрим. урл такой = /index.php?name=shop&op=filter&tkan=10&razmer=6
Предположим, это магазин футболок.
пользователь включил фильтр:
Ткань: Хлопок (в урле это tkan = 10;
Размер: XXL (в урле это razmer = 6).
запрос в скрипте при этом:
SELECT a.* FROM products a JOIN products_params_links a1 ON a.lid=a1.lid AND (a1.id_attribute=2 AND a1.id_value=10) OR (a1.id_attribute=3 AND a1.id_value=6) )
но! пользователю так же выводятся и прочие размеры! это нехорошо. то есть должно быть строго - если посетитель указал конкретный размер, то должен выводиться только тот размер, который ему нужен. видимо все таки надо как то комбинировать OR и AND, но я пока что не соображу, как.
если клиент хочет посмотреть все
красные футболки из
хлопка больших размеров, ему должно вывести только их! но проблема в том что если все таки использовать AND, а не OR, то в том случае, если в базе нет какого то из параметров, то не выводится ничего! а нужно, чтобы выводило то, что есть. например, если нет ни одной красной футболки, то пусть остаются все остальные параметры (хлопок + большие размеры).
============
то есть такой запрос, само собой, вернет пустой результат:
SELECT DISTINCT a.lid, a.cid, a.title, a.image, a.price, a.oldprice, a.totalcomments, a.status, a.keyw, a.keyw_visible, a.custom_url, a.visibleparams
FROM asershop_products a
JOIN asershop_products_params_links a1 ON a.lid = a1.lid
AND (
(
a1.id_attribute =999
AND a1.id_value =555
)
AND (
a1.id_attribute =2
AND a1.id_value =10
)
AND (
a1.id_attribute =3
AND a1.id_value =6
)
)
потому что по первому параметру: "a1.id_attribute =999 AND a1.id_value =555" в базе ничего нет. соответственно, я хочу, чтобы такие параметры как-то исключались из запроса, чтобы выдавать то, что возможно!