MySQL Forums
Forum List  »  Russian

Помогите правильно сформировать запрос
Posted by: John Denis
Date: October 28, 2012 09:11AM

Доброго времени суток.

Никак не могу понять, как происходит отсеивание в Я.М.
К примеру http://market.yandex.ru/guru.xml?CMD=-RR=9,0,0,0-VIS=70-CAT_ID=160043-EXC=1-PG=10&hid=91491
В правой колонке выбираю "Тип" и жму "смартфон/коммуникатор"
Мне вернуло 392 товара
Далее, там же выбираю "Тип" "телефон"
и мне вернуло 908 товаров.
Т.е. в параметре "Тип" все его значения суммируются.

Но если я выберу "Тип корпуса" -> "классический", то мне вернет 775 товаров.
Т.е. он отсеял товары, которые не совпали.
Но при этом, если я выберу еще "Тип корпуса" -> "раскладушка", то вернет 815 товаров.

Получается так, что параметры суммируют значения друг-друга, но отсеивают среди других.

У меня сейчас выборка только по самим значениям. Т.е. не по "Тип", а по "телефон"
Условие запроса собираю в начале в массив (это если есть $vals)

foreach($vals AS $k => $v)
{
$add[] = " p.pi IN (
SELECT params_pi FROM products_params WHERE param_pi = p.pi AND param_vals = '".(int)$v."'
) ";
}

p.pi - это ID товаров
params_pi - это ID товаров которые связаны с значениями параметров.

И так при каждом выборе значения, например "Тип корпуса" -> "классический" + "раскладушка"....
ID самих параметров я не использую, так как не нужно было. Но сейчас понял, что без них никак.

И вот никак не могу понять как фильтровать так же как на маркете.

Мне помогли немного и написали кода http://pastie.org/4907145
Пробовал делать, в итоге видимо запрос не правильный.
Пример http://sqlfiddle.com/#!2/0e3f7/3
Помогите поправить запрос пожалуйста. Уже не много дней пытаюсь понять как сделать.

Options: ReplyQuote


Subject
Views
Written By
Posted
Помогите правильно сформировать запрос
5517
October 28, 2012 09:11AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.