Помогите разобраться с leftJoin и where
День добрый. Пытаюсь сделать выборку товаров, имеющих в опции ps_type определенные значения.
Есть список товаров:
Делаю это через leftJoin и where:
Я не слишком хорошо знаком с механизмами SQL, но глядя на это условие, у меня возникает ощущение, что я пытаюсь найти строки в которых значение ps_type одновременно равно и «Подвесной», и «Административный», что, закономерно, ни к чему не приводит. Насколько я понимаю, мне нужно разносить значения, между которыми должно быть условие AND в разные опции? Или я неправильно понимаю?
Есть список товаров:
Товар 1; Административный, ПодвеснойНужно выбрать 1 и 2.
Товар 2; Административный, Промышленный, Подвесной
Товар 3; Промышленный, Подвесной
Делаю это через leftJoin и where:
[[!msProducts?
&parents=`2`
&leftJoin=`{
"ps_type": {
"class": "msProductOption",
"on": "ps_type.key = 'ps_type' AND ps_type.product_id = msProduct.id"
}
}`
&where=`{"ps_type.value:LIKE": "Подвесной", "AND:ps_type.value:LIKE": "Административный"}`
]]
Результатов у данной выборки нет.Я не слишком хорошо знаком с механизмами SQL, но глядя на это условие, у меня возникает ощущение, что я пытаюсь найти строки в которых значение ps_type одновременно равно и «Подвесной», и «Административный», что, закономерно, ни к чему не приводит. Насколько я понимаю, мне нужно разносить значения, между которыми должно быть условие AND в разные опции? Или я неправильно понимаю?
Комментарии: 8
А так?
[[!msProducts?
&parents=`2`
&join=`{
"ps_type1": {
"class": "msProductOption",
"on": "ps_type1.key = 'ps_type' AND ps_type1.product_id = msProduct.id AND ps_type1.value LIKE 'Подвесной'"
},
"ps_type2": {
"class": "msProductOption",
"on": "ps_type2.key = 'ps_type' AND ps_type2.product_id = msProduct.id AND ps_type2.value LIKE 'Административный'"
}
}`
]]
Да, спасибо огромное, так работает, только
&innerJoin
Память уже не та :)
Товар 1; Административный, Подвесной
Товар 2; Административный, Промышленный, Подвесной
Товар 3; Промышленный, Подвесной
У вас в msProductOption в value прописано сразу типа «Административный, Промышленный, Подвесной» одним значением, или три отдельных строчки «Административный», «Промышленный», «Подвесной» (то есть три строки на один товар)?
Три отдельных значения.
Подробно ответил здесь.
Огромное спасибо за столь подробную информацию.
Всегда пожалуйста!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.