MYSQL логика одного запрос в котором есть несколько PARENT = лажа помогите

PN
На сайте с 01.05.2008
Offline
113
569

MYSQL логика одного запроа в котором есть несколько PARENT = лажа помогите

Есть таблица со свойствами. И войств несколько. Как выбрать нужные? у меня идет

AND ( (parent_id=XX ( vlue="green" OR value="yellow" OR value="orange")) AND (parent_id=YY ( vlue="dom" OR value="stena" OR value="garaj"))

)

Вобщем если выбрано одно поле то все ок. Но когда в поиске выбраюи несколько полей то INNER JOIN не происходит т.к. одновременно parent_id не может отличаться. Но OR выдаст много лишнего.

---------- Добавлено 02.11.2012 в 00:10 ----------

ЧЕрез CASE поулчается фигня., тк. выдает оно все равно что OR

т.е. если parent_id = xx то одно условие, если YY то другое, но тогда выдается полный список товаров - все равно что OR

(SELECT scp.`shop_id` FROM `shop_catalog_page` AS `scp`

INNER JOIN properties AS scpp ON scpp.properties_producer_extend = scp.shop_producer_extend AND scpp.properties_product_id = scp.shop_id AND (

CASE

WHEN properties_parentid='10' THEN ( properties_types_value_int='24' OR properties_types_value_int='25' )

WHEN properties_parentid='9' THEN ( properties_types_value_int='13' )

ELSE NULL

END

)

WHERE `shop_producer_`='435'

GROUP BY shop_id

)

IL
На сайте с 20.04.2007
Offline
435
#1

...AND

((parent=1 AND values =...) OR (parent=2 AND values=...))

А ещё UNION существует.

А чего не в своей же теме? /ru/forum/750619

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
PN
На сайте с 01.05.2008
Offline
113
#2

Да думал не ответят там, ждал ждал...

Сейчаса UNION почитатю

---------- Добавлено 02.11.2012 в 00:27 ----------

а... так UNION не решает.. Т.к мне нужно так, что бы ЕСЛИ совпадает CASE то сгрупировать их как-то и проверить что бы ID совпавшего товара уже в других CASE тоже совпадал... это я так вижу единственное решение..

В остальном - что case что union - одно и то же, + union базу вешает я слышал.

IL
На сайте с 20.04.2007
Offline
435
#3
Prosto_niki:
union базу вешает я слышал.

От кого слышал? Подробности?

* умелыми руками можно и поиском по ключу повесить..

p.s. http://www.mysqldiary.com/optimizing-the-mysql-in-comparison-operations-which-include-the-indexed-field/

PN
На сайте с 01.05.2008
Offline
113
#4

Ну да ладно, не это меня интеерсует. UNION тоже не решает задачу... Надо как-то сгрупировать ID и вывести В IN ( )

UNION же вернет все те же значения что и в случае CASE верно?

---------- Добавлено 02.11.2012 в 01:02 ----------

Хехе! вроде решил

SELECT `shop_id`, COUNT(*) as count FROM `sho....

и внизу

GROUP BY shop_cat_page_id

HAVING count > 2

---------- Добавлено 02.11.2012 в 01:06 ----------

Блин) Теперь новая лажа, если выбор только по 1 критерию то не катит..

---------- Добавлено 02.11.2012 в 01:14 ----------

Хм) тоже вроде решил) считаю сколько коунтов надо в соотвествии от количества заполненых полей. Вроде работает! )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий