Интересно почитать… Блог в котором есть много интересной информации…

17 октября 2011

Как получить уникальную категорию товара в VirtueMart 1.9

Категория: программирование — Метки: , — dmitriano @ 13:00

Список категорий с парентами:

SELECT c.category_id, c.category_url, cref.category_parent_id
FROM jos_vm_category AS c, jos_vm_category_xref AS cref
WHERE c.category_id = cref.category_child_id
ORDER BY c.category_id

Список товаров с категориями:

SELECT p.product_id, p.product_url, p.product_sku, c.category_id
FROM jos_vm_product AS p, jos_vm_product_category_xref AS c
WHERE IF( p.product_parent_id >0, p.product_parent_id, p.product_id ) = c.product_id
ORDER BY p.product_id

запрос сам по себе отличный, но если товар входит в две или более категорий, то соответственно в списке он будет два или более раз. Для того, чтобы товар можно было однозначно идентифицировать по категории, можно ввести понятие базовой категории с минимальным ID и создать соответствующий VIEW:

CREATE VIEW `vms_categorized_product` AS 
select `p`.`product_id` AS `product_id`,`c`.`category_id` AS `category_id`,`c`.`category_name` AS `category_name`,`p`.`product_name` AS `product_name`,`p`.`product_url` AS `product_url`,`c`.`category_url` AS `category_url`,`p`.`product_thumb_image` AS `product_thumb_image` 
from ((`jos_vm_product` `p` join `jos_vm_category` `c`) join `vms_basic_category` `x`) 
where ((`x`.`category_id` = `c`.`category_id`) and (`x`.`product_id` = `p`.`product_id`)) 
order by `c`.`category_id`,`p`.`product_name`;

а потом заменить в нашем запросе jos_vm_product_category_xref на vms_categorized_product.

Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru