gpt4 book ai didi

php - 比较不同供应商的一组产品 - SQL 与 PHP

转载 作者:行者123 更新时间:2023-11-29 13:17:04 25 4
gpt4 key购买 nike

我有一个表单,允许用户选择一组产品并比较不同供应商的价格

数据如下:

供应商表

Suppliers (id, name)
Values (1, 'Shop 1')
Values (2, 'Shop 2')
Values (3, 'Shop 3')
...

设备表

Devices (id, name)
Values (1, 'IBM x201')
Values (2, 'IBM x220')
Values (3, 'IBM x230')
...

产品表

Products (id, device_id, supplier_id, hdd_size, cpu, price)
Values (1, 1, 1, 160, 2.0, 300)
Values (2, 1, 1, 320, 2.0, 330)
Values (3, 1, 1, 160, 2.2, 360)
Values (4, 1, 1, 320, 2.2, 410)
Values (5, 1, 2, 160, 2.0, 310)
Values (6, 1, 2, 320, 2.0, 340)
Values (7, 1, 2, 160, 2.2, 370)
Values (8, 1, 2, 320, 2.2, 420)
...

因此,用户可能会要求 q 或更多设备提供不同的 crytria 的价格:

请求:

[ 
{ device_id: 1, hdd: 160 },
{ device_id: 3, cpu: 2.0}
]

因此用户希望购买硬盘至少为160GB的IBM x201和CPU至少为2.0GHZ的IBM x230。例如,这应该返回按供应商 ID 分组的价格

{ supplier_id: 1, price: 730, products: [
{ id: 1, hdd_size: 160, cpu: 2.0, price: 300 },
{ id: 22, hdd_size: 160, cpu: 2.2, price: 430 },
]},
{ supplier_id: 1, price: 780, products: [
{ id: 1, hdd_size: 160, cpu: 2.0, price: 300 },
{ id: 37, hdd_size: 320, cpu: 2.2, price: 480 },
]},
{ supplier_id: 2, price: 750, products: [
{ id: 12, hdd_size: 160, cpu: 2.0, price: 310 },
{ id: 39, hdd_size: 160, cpu: 2.0, price: 440 },
]},
...

如何在 SQL 中执行此操作。我正在尝试不同的方法,但我认为在数据库之外进行分组和计算实际上可能更容易。

有什么想法吗?

编辑: http://sqlfiddle.com/#!2/162b62

最佳答案

假设您需要满足每个供应商条件的 2 种值(value)最低的产品,解决方案如下

选择supplier_id, sum(price)as sum, array[ array[(从供应商id=P.supplier_id订单按价格升序限制1的产品中选择id), (从supplier_id=P.supplier_id订单中选择hdd_size,按价格升序限制1), (从supplier_id=P.supplier_id订单中按价格asc限制1的产品中选择cpu), (从supplier_id=P.supplier_id订单中选择价格,按价格升序限制1)], array[(从供应商id=P.supplier_id订单按价格asc偏移1限制1的产品中选择id), (从供应商id = P.supplier_id的产品中选择hdd_size,按价格asc偏移1限制1), (从supplier_id=P.supplier_id的产品中选择cpu,按价格asc偏移1限制1), (从supplier_id=P.supplier_id订单中选择价格,按价格asc偏移1限制1)] ]来自 P 的产品,其中 device_id=(从名称类似“ibm x201”的设备中选择 id)且 cpu>=2.0 且 hdd_size>= 160 按count(id)>2的supplier_id分组;

您可以轻松地修改它,通过在您打算使用它的语言的 for 循环中创建 sql 语句来获取产品的多个计数。它很长,我真的不知道性能如何,但它完成这项工作。

它比单独计算所有供应商的数量(针对 2 个供应商进行了测试)效果更好。我不确定当元组数量增加时它会如何。

关于php - 比较不同供应商的一组产品 - SQL 与 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com