如何获取每个产品的所有变体,并提取多次获取产品名称
问题描述:
我有3个表格。如何获取每个产品的所有变体,并提取多次获取产品名称
“table_products”
product_id product_name
1 A
2 B
3 C
4 D
5 E
“table_varients”
variant_id variant_name
1 v1
2 v2
3 v3
4 v4
5 v5
“table_product_varients”
product_id variant_id
1 1
1 2
1 3
2 3
2 4
3 1
3 4
4 1
5 1
5 2
,我想从选择这样的查询结果:
A - V1, V2, V3
B - V3, V4
C - V1, V4
D - V1
E - V1, V2
Devesh
答
简单连接,然后GROUP_CONCAT
SELECT a.product_name, GROUP_CONCAT(c.variant_name)
FROM table_products a
INNER JOIN table_product_varients b ON a.product_id = b.product_id
INNER JOIN table_varients c ON b.variant_id = c.variant_id
GROUP BY a.product_name
感谢您的快速反应。 GROUP_CONCAT()将连接字符串Form中的所有值并将其视为单个值。有没有其他方法可以分别读取所有的值(在这种情况下是变体)。我问这是因为在查询后我需要将所有这些值存储在perl变量中。 –
并非如此,因为这意味着从查询中返回每行中可变数量的列。如果您使用GROUP_CONCAT和适当的分隔符,则可以基于该分隔符将该字段分解为数组,但是在脚本中循环插入各个值到数组中可能会更容易。想想php(也可能是Perl),你可以敲一个MySQL函数将GROUP_CONCAT字段转换为序列化数组,但不确定这会有所帮助,我也不期望它很容易被维护。 – Kickstart