Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Разбираюсь щас с VirtueMart и очень хочется сделать фильтр по производителю. Есть запрос:
SELECT DISTINCT
`product_id`, `product_url`, `product_weight`
и еще штук 20
FROM (`jos_vm_product`, `jos_vm_category`,
`jos_vm_product_category_xref`,`jos_vm_shopper_group`)
LEFT JOIN `jos_vm_product_price` ON `jos_vm_product`.`product_id` = `jos_vm_product_price`.`product_id`
WHERE `jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_id` AND `jos_vm_product_category_xref`.`category_id`=`jos_vm_category`.`category_id` AND `jos_vm_product_category_xref`.`category_id`=249 AND
И еще штук 30 условий
GROUP BY `jos_vm_product`.`product_sku`
ORDER BY `jos_vm_product`.`product_name` ASC
Данный запрос возвращает все товары 249-ой категории.
А мне нужо только те у которых
`jos_vm_product_mf_xref`.`manufacturer_id` =215
но я не знаю куда и как втулить этот запрос чтоб работало
В таблице `jos_vm_product_mf_xref 2 поля `manufacturer_id` и 'product_id` тут товары привязываются к производителю
Если что непонятно описал или еще что нужно знать для решения, то я на форуме, отвечу сразу :-)
Неактивен
Нужно присоединить еще одну таблицу
LEFT JOIN `jos_vm_product_mf_xref` ON `jos_vm_product_mf_xref`.product_id=`jos_vm_product`.product_id (наверное такая связь)
join добавить перед WHERE, а Ваше условие через AND к условиям
Неактивен
Дело в том что это первое что я сделал все равно все те же 241 результат а должно быть 29(((
Вот что даже пробывал:
SELECT *
FROM `jos_vm_product`
JOIN `jos_vm_product_price` ON `jos_vm_product`.`product_id` = `jos_vm_product_price`.`product_id`
JOIN `jos_vm_product_mf_xref` ON `jos_vm_product`.`product_id` = `jos_vm_product_mf_xref`.`product_id`
WHERE `jos_vm_product_mf_xref`.`manufacturer_id` =215
LIMIT 0 , 30
просто на более простом примере пробывал подключать 2 таблицы все работает!
Но как только делаю (щас прости приведу полный пример)
SELECT DISTINCT `product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`jos_vm_category`.`category_id`, `jos_vm_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`, `product_url`, `product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`jos_vm_product`.`mdate`, `jos_vm_product`.`cdate` FROM (`jos_vm_product`, `jos_vm_category`, `jos_vm_product_category_xref`,`jos_vm_shopper_group`)
LEFT JOIN `jos_vm_product_price` ON `jos_vm_product`.`product_id` = `jos_vm_product_price`.`product_id`
LEFT JOIN `jos_vm_product_mf_xref` ON `jos_vm_product_mf_xref`.`product_id`=`jos_vm_product`.`product_id` WHERE `jos_vm_product_mf_xref`.`manufacturer_id` =215 and `jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_id` AND `jos_vm_product_category_xref`.`category_id`=`jos_vm_category`.`category_id` AND `jos_vm_product_category_xref`.`category_id`=249 AND ((`jos_vm_product`.`product_id`=`jos_vm_product_price`.`product_id` AND `jos_vm_shopper_group`.`shopper_group_id`=`jos_vm_product_price`.`shopper_group_id`) OR `jos_vm_product_price`.`product_id` IS NULL) AND `jos_vm_shopper_group`.`default` = 1 AND ((`product_parent_id`='0') OR (`product_parent_id`='')) AND `product_publish`='Y' AND
`category_publish`='Y' GROUP BY `jos_vm_product`.`product_sku` ORDER BY `jos_vm_product`.`product_name` ASC
опять те же 241 не пойму в чем дело. Может можно как то перефразировать запрос?
Неактивен
Прошу прощения, не LEFT JOIN, а INNER JOIN
Неактивен
Спасибо большое. Теперь с чистой совестью можно удалять тему)))
Неактивен