【发布时间】:2020-08-22 19:25:21
【问题描述】:
我有一个像这样的表结构,其中 products 和 attribute_values 具有多对多关系,而 attribute_values 与属性具有一对多关系。这是 SQL Fiddle http://sqlfiddle.com/#!9/77e01e7
表属性
id | name
1 | Color
2 | Size
表attribute_values
id | name | attribute_id
1 | Red | 1
2 | Blue | 1
3 | small| 2
4 | XL | 2
表attribute_value_product
product_id | attribute_value_id
1 | 1 //XYZ - Red
1 | 3 //XYZ - small
2 | 2 //ABC - Blue
2 | 4 //ABC - XL
表产品
id | name
1 | XYZ
2 | ABC
如何从单个查询中获取产品的属性、attribute_values 及其选择的值,例如产品 XYZ 我想要这样的结果。
[
{
"attribute": [
{
"id": 1,
"name": "Color",
"attribute_value_id": 1,
"attribute_values": [
{
"id": 1,
"name": "Red"
},
{
"id": 2,
"name": "Blue"
} ]
} ]
},
{
"attribute": [
{
"id": 2,
"name": "Size",
"attribute_value_id": 3,
"attribute_values": [
{
"id": 3,
"name": "small"
},
{
"id": 4,
"name": "XL"
}]
}]
}]
可以在单个查询中完成吗?
【问题讨论】:
-
您通常会在应用程序代码中处理数据显示问题(例如编译 json 位)
-
没有json我会处理我想要一个查询
-
当然。但是您向我们展示了通常通过解析二维数组获得的结果。
-
有关构建能够返回此类数组的查询的帮助,请参阅meta.stackoverflow.com/questions/333952/…
标签: mysql inner-join