我为构建查询提供了一些帮助,以获取具有相应变体和variant_options的产品。我想知道具体产品页面上的下一个可用变体。
我做了一张图片以获取更多信息。
我有以下查询,但我认为我的逻辑不适用于多个变体,而且我无法解析结果以构建产品页面。
SELECT products.id,
products.parent_id,
name,
attribute_name,
attribute_values.value,
if(products.id=4, 'TRUE', '') AS selected,
#attribute_value_id AS attr_value_id,
#if (INSTR(
(SELECT group_concat(attribute_value_id)
FROM product_variant_options
WHERE product_variant_options.product_id=4),attribute_value_id)>0, 'YES', '') AS y,
if(if(INSTR(
(SELECT group_concat(attribute_value_id)
FROM product_variant_options
WHERE product_variant_options.product_id=4),attribute_value_id)>0, 'YES', '')='yes', products.id, '') AS id_to_open #
(SELECT group_concat(attribute_value_id)
FROM product_variant_options
WHERE product_variant_options.product_id=1) x
FROM products
INNER JOIN product_variant_options ON product_variant_options.product_id=products.id
INNER JOIN product_variants ON product_variants.id=product_variant_options.product_variant_id
INNER JOIN attributes ON attributes.id=product_variants.attribute_id
INNER JOIN attribute_values ON attribute_values.id=product_variant_options.attribute_value_id
ORDER BY products.id
更新:
产品
| id | parent_id | name |
|----|-----------|--------------------------------|
| 1 | 0 | Phone iPhone XS, Green, 128 GB |
| 2 | 1 | Phone iPhone XS, Green, 512 GB |
| 3 | 2 | Phone iPhone XS, Red, 128 GB |
| 4 | 3 | Phone iPhone XS, Red, 512 GB |
attribute_values
| id | value |
|----|--------|
| 20 | Green |
| 21 | Red |
| 22 | 128 GB |
| 23 | 512 GB |
属性
| id | attribute_name |
|----|----------------|
| 10 | Color |
| 11 | Storage |
product_variants
| id | product_id | attribute_id |
|----|------------|--------------|
| 1 | 1 | 10 |
| 2 | 1 | 11 |
product_variant_options
| id | product_id | product_variant_id | attribute_value_id |
|----|------------|--------------------|--------------------|
| 1 | 1 | 1 | 20 |
| 2 | 1 | 2 | 22 |
| 3 | 2 | 1 | 20 |
| 4 | 2 | 2 | 23 |
| 5 | 3 | 1 | 21 |
| 6 | 3 | 2 | 22 |
| 7 | 4 | 1 | 21 |
| 8 | 4 | 2 | 23 |