我知道我的问题有点奇怪,但我会尽量让它变得清晰。
products_table
ID | code | product_variants_id | product_name | variants | variants_value
1 | 1| 123451 | beer cake | color | blue
2 | 1| 123451 | beer cake | temperature | cold
3 | 1| 123451 | beer cake | weight | 0.5
4 | 2| 123453 | ad wrap | color | green
5 | 2| 123453 | ad wrap | weight | 1
这是我的最终产品表,现在显示产品,这就是我所做的。
SELECT xx.code, GROUP_CONCAT(xx.variants) AS variants,
GROUP_CONCAT(xx.variants_value) AS variants_value ,
xx.product_name, xx.product_variants_id
FROM products_table xx
GROUP BY xx.product_variants_id
在此查询之后,我的表看起来像这样
code | product_variants_id | product_name | variants | variants_value
1 | 123451 | beer cake | color,temperature,weight| blue,cold,0.5
2 | 123453 | ad wrap | color,weight | green,1
现在我可以直接浏览此表并逐个获取产品并显示它的变体。
我真正的问题是,有没有办法将我刚刚获得的这些连接结果联系起来?
例如:
在服务器端,我可以获得变体color
,如何获得color
的相应值?
我的方法是什么?
答案 0 :(得分:3)
首先将变量和相应的值连接在一起,然后执行group_concat()
:
SELECT xx.code, GROUP_CONCAT(concat(xx.variants,':',xx.variants_value)) AS variants_and_values, xx.product_name, xx.product_variants_id
FROM products_table xx
GROUP BY xx.product_variants_id, xx.product_name, xx.code
答案 1 :(得分:1)
例如,您可以获取结果数据并对其进行迭代。
PHP实施:
foreach ($data as $key => $item) {
$data[$key]['variants'] = explode(',', $item['variants']);
$data[$key]['variants_value'] = explode(',', $item['variants_value']);
}
因此您将$data[$key]['variants'][0]
保持颜色并$data[$key]['variants_value'][0]
保持其值