通过数据库查询从特定产品页面获取对应的下一个可用变体

时间:2019-03-22 15:28:28

标签: php mysql

我为构建查询提供了一些帮助,以获取具有相应变体和variant_options的产品。我想知道具体产品页面上的下一个可用变体。

我做了一张图片以获取更多信息。

实际上,我需要逻辑知道绿色页面中哪个红色选项可用。 enter image description here

我有以下查询,但我认为我的逻辑不适用于多个变体,而且我无法解析结果以构建产品页面。

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         |

DB-Fiddle HERE

0 个答案:

没有答案