好的,我有一张table,上面放着所有的产品。产品有三种类型“简单”、“可配置”和“变体”。
简单产品和变型产品只是一行,有一个“价格”列和一个可选的“销售价格”列。
可配置产品的“price”和“sale\u price”列的值为零,但却有子(variant)产品行(由“parent\u id”列连接)。
我要做的是根据价格创建一个过滤器。如果一个产品有一个“销售价格”值,它应该用它来代替“价格”值。这适用于简单产品:
select `products`.*,
`lookup_product_categories`.`category_id` as `pivot_category_id`,
`lookup_product_categories`.`product_id` as `pivot_product_id`
from `products`
inner join `lookup_product_categories` on `products`.`id` = `lookup_product_categories`.`product_id`
where `lookup_product_categories`.`category_id` = '38'
and (
`type` = 'simple'
and
IF (
`sale_price` > 0,
`sale_price` >= 30 AND `sale_price` <= 150,
`price` >= 30 AND `price` <= 150
)
)
and `active` = '1'
and `valid` = '1'
and `products`.`deleted_at` is null
order by `created_at` desc
我现在需要做的是在“可配置”产品的情况下获取子产品,确定每个产品是否应该使用销售价格或正常价格,然后返回父可配置产品,如果至少有一个子产品在筛选范围内,在这种情况下;在30.00到150.00之间。
提前谢谢。我完全被这个困住了。我试过内部连接,但语法不太正确。
1条答案
按热度按时间knsnq2tg1#
我假设表中有以下列
如果没有示例数据,很难编写查询,但您可以尝试以下操作: