下面是我的数据库结构,之后是我所需的输出。几天以来,我没有得到任何逻辑来解决
{
"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_。