select count(*) FROM shop_products_opt_val_variants LEFT JOIN shop_product_options_set USING (variantID) LEFT JOIN shop_products USING(productID) WHERE option_value IN ('фен','самсунг') GROUP BY productID HAVING count(1)=2";
Спасибо большое получилось, и немного разобрался
получилось
select * FROM таблица_1 LEFT JOIN таблица_2 USING (optionid) LEFT JOIN таблица_2 USING(dopid) WHERE name IN('mp3', 'фай-фай') GROUP BY name HAVING count(0)=2
хотел ещё спросить
если нужно подсчитать count (в этом запросе) как сделать ?, сейчас выдаёт всегда 2, количества "HAVING count(0)=2"
Приведи названия строк из таблиц, и что должно получиться. Ты походу пользуешься стандартным языком SQL.
да я стандартным языком пока, учу дальше
вводим для поиска mp3 и фай-фай
берём из 1-й таблицы (mp3 и фай-фай) и получаем (11 и 12) - optionid
2- таблиц где употребляются optionid (11 и 12) и получаем dopid - только должно быть и 11 и 12 и каждого элемента
3- таблица dopid где есть такие выводим инфу (в ней детально описание товара)
Подскажите как можно объединить что б быстро выполнялось
сейчас работает отдельно каждый
join у меня что-то не получилось нормально сделать
это фильтр товара
1 таблица
делаем запрос по нескольким характеристикам (name) получаем id их (optionid)
База примерно 300 строк
переделывал фильтр товара на сайте, и допеределывался что время работы с базой увеличилось.....
кто знает как оптимизировать можно ещё
фильтр товаров
1-таблица.
id характеристики выбирается в таблице
2-таблица.
смотрятся все "id характеристики" и выбираются ID ТОВАРА
таблица имеет вид (ID ТОВАРА И ID ХАРАКТЕРИСТИКИ)
3-таблица.
выбранные id товара и будут показываться
$rowcategoryproductss1_count = количество характеристик для фильтра
select * FROM ".PRODUCTS_TABLE." where
productID IN (SELECT productID FROM ".PRODUCTS_OPTIONS_SET_TABLE." where
variantID IN (SELECT variantID FROM ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." where option_value IN (1,2,3))
GROUP BY productID HAVING count(0)=".$rowcategoryproductss1_count."
Возникла проблема есть функция на jqure
есть блок который как подсказка появляется при клике
по функции по id
1. создаётся
2. удаляется remove() через время
но когда заново должен появится он может появляться только ниже на странице чем был преведущий
category_products LIKE '%арбуз%' AND category_products LIKE '%дыня%' AND category_products LIKE '%виноград%' AND category_products LIKE '%шоколад%' AND (category_products LIKE '%орех%' OR category_products LIKE '%карамель%' OR category_products LIKE '%семочки%')
У меня это идёт для магазина подбор товара по параметрам
1. по то что только в php - у меня через смарти компиляция шаблона в html (движок готовый)
2. mod_rewrite - как я понимаю не скрывает, а только заменяет а тогда получится много страниц html которые нужно прятать от яндекса
Скорей всего нужно будет джава скрипт + аякс
но я там до конца не понял, если
- посетитель выбрал параметры товара - ему открылись товары отфильтрованные
- посетитель выбрал товар для просмотра
- выбрал вернуться назад - то фильтр сбрасывается?
это будет не удобно...
Наверно самый оптимальный вариант
site.ru/page1.html#id=1&bb=1
только как выдирать массивы ?
если конечно
- взять адресс страницы
- поместить в массив и сделать замену на site.ru/page1.php?id=1&bb=1
- и с этого масива взять get -НО ТАК КАК ПОНИМАЮ НЕЛЬЗЯ
вот вариант как само лучше оранизованно
страница - http://www[dot]svetex[dot]ru/shop/CID_119[dot]html
с фильтром - http://www.svetex.ru/shop/CID_119.html#filter%2Ffilter[type]%3D%26selsectcode%3D119%26set_filter%3DY%26filter[price_min]%3D%26filter[price_max]%3D%26filter[vo_manuf]%3D%26filter[SV_s_komnata][]%3D%D0%93%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B0%D1%8F