SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.09.2008 23:29:25

Artik20003
Участник
Зарегистрирован: 06.09.2008
Сообщений: 3

Модификация запроса

Здравствуйте!

Разбираюсь щас с 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` тут товары привязываются к производителю


Если что непонятно описал или еще что нужно знать для решения, то я на форуме, отвечу сразу :-)

Неактивен

 

#2 06.09.2008 23:34:14

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Модификация запроса

Нужно присоединить еще одну таблицу
LEFT JOIN `jos_vm_product_mf_xref` ON `jos_vm_product_mf_xref`.product_id=`jos_vm_product`.product_id (наверное такая связь)
join добавить перед WHERE, а Ваше условие через AND к условиям

Неактивен

 

#3 06.09.2008 23:44:02

Artik20003
Участник
Зарегистрирован: 06.09.2008
Сообщений: 3

Re: Модификация запроса

Дело в том что это первое что я сделал все равно все те же 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 не пойму в чем дело. Может можно как то перефразировать запрос?

Неактивен

 

#4 06.09.2008 23:51:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Модификация запроса

Прошу прощения, не LEFT JOIN, а INNER JOIN

Неактивен

 

#5 07.09.2008 00:02:04

Artik20003
Участник
Зарегистрирован: 06.09.2008
Сообщений: 3

Re: Модификация запроса

Спасибо большое.  Теперь с чистой совестью можно удалять тему)))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson