如何使用mysql和php生成特定的数据结构



下面是我的数据库结构,之后是我所需的输出。几天以来,我没有得到任何逻辑来解决

{
"LIST": [
{
"ID": "1",
"PID": "1",
"PLID": "1",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "2",
"PID": "1",
"PLID": "1",
"name": "PROCESSOR",
"value": "Dual Core"
},
{
"ID": "3",
"PID": "1",
"PLID": "1",
"name": "RAM",
"value": "4 GB"
},
{
"ID": "4",
"PID": "1",
"PLID": "1",
"name": "HARD DISK",
"value": "500 GB HDD"
},
{
"ID": "5",
"PID": "1",
"PLID": "2",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "6",
"PID": "1",
"PLID": "2",
"name": "PROCESSOR",
"value": "Dual Core"
},
{
"ID": "7",
"PID": "1",
"PLID": "2",
"name": "RAM",
"value": "8 GB"
},
{
"ID": "8",
"PID": "1",
"PLID": "2",
"name": "HARD DISK",
"value": "500 GB HDD"
},
{
"ID": "9",
"PID": "1",
"PLID": "3",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "10",
"PID": "1",
"PLID": "3",
"name": "PROCESSOR",
"value": "Dual Core"
},
{
"ID": "11",
"PID": "1",
"PLID": "3",
"name": "RAM",
"value": "4 GB"
},
{
"ID": "12",
"PID": "1",
"PLID": "3",
"name": "HARD DISK",
"value": "1 TB HDD"
},
{
"ID": "13",
"PID": "1",
"PLID": "4",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "14",
"PID": "1",
"PLID": "4",
"name": "PROCESSOR",
"value": "Dual Core"
},
{
"ID": "15",
"PID": "1",
"PLID": "4",
"name": "RAM",
"value": "8 GB"
},
{
"ID": "16",
"PID": "1",
"PLID": "4",
"name": "HARD DISK",
"value": "1 TB HDD"
},
{
"ID": "17",
"PID": "1",
"PLID": "5",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "18",
"PID": "1",
"PLID": "5",
"name": "PROCESSOR",
"value": "i3"
},
{
"ID": "19",
"PID": "1",
"PLID": "5",
"name": "RAM",
"value": "4 GB"
},
{
"ID": "20",
"PID": "1",
"PLID": "5",
"name": "HARD DISK",
"value": "500 GB HDD"
},
{
"ID": "21",
"PID": "1",
"PLID": "6",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "22",
"PID": "1",
"PLID": "6",
"name": "PROCESSOR",
"value": "i3"
},
{
"ID": "23",
"PID": "1",
"PLID": "6",
"name": "RAM",
"value": "8 GB"
},
{
"ID": "24",
"PID": "1",
"PLID": "6",
"name": "HARD DISK",
"value": "500 GB HDD"
},
{
"ID": "25",
"PID": "1",
"PLID": "7",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "26",
"PID": "1",
"PLID": "7",
"name": "PROCESSOR",
"value": "i3"
},
{
"ID": "27",
"PID": "1",
"PLID": "7",
"name": "RAM",
"value": "4 GB"
},
{
"ID": "28",
"PID": "1",
"PLID": "7",
"name": "HARD DISK",
"value": "1 TB HDD"
},
{
"ID": "29",
"PID": "1",
"PLID": "8",
"name": "BRAND",
"value": "Dell"
},
{
"ID": "30",
"PID": "1",
"PLID": "8",
"name": "PROCESSOR",
"value": "i3"
},
{
"ID": "31",
"PID": "1",
"PLID": "8",
"name": "RAM",
"value": "8 GB"
},
{
"ID": "32",
"PID": "1",
"PLID": "8",
"name": "HARD DISK",
"value": "1 TB HDD"
}
]
}

我想要以下格式的数据。所需的输出就像所有处理器列表的品牌,所有处理器都有可用的ram列表,所有ram都有可用HDD选项。

brand{

dell{i5,i3}  
}
processor{
i5{4gb,8gb}
i3{4gb,16gb}
}
ram{
4gb{500,1tb}
8gb{500,1tb}
16gb{500,2tb,1tb}
}

我尝试了一些sql查询,但我无法为上面的结构创建逻辑

SELECT DISTINCT(PLID) as PLID FROM `variant` where PID=1

SELECT DISTINCT(name) as name FROM `variant` where PID=1
SELECT DISTINCT(value) as value FROM `variant` where PID=1 and PLID in (1,2,3,4,5,6,7,8) and name="PROCESSOR"

谢谢

步骤1:重组数据,使每台计算机有一行

id, processor, ram, disk, ...

如果你不想要GIGO,那么一定要去掉绒毛(例如"gb"(并标准化值(1TB->1024GB(。

步骤2:

SELECT processor,
GROUP_CONCAT(DISTINCT ram ORDER BY ram)
FROM tbl
GROUP BY processor;

应该提供类似的东西

i5   4,8
i3   8,16

注意:ram必须是数字;否则CCD_ 2将返回CCD_。

相关内容

  • 没有找到相关文章

最新更新