我有一张价格信息表,如下图所示,我试图查询数据库以将“项目”和最便宜的供应商价值返回给我。
所以对于下表,它将是
- 自行车,供应商 3 - 120.43
- 鞋,供应商 2 - 19.99
- 球,供应商 1 - 5.50
这可能与 sql 查询有关,还是您需要输出所有值然后用 php(或选择的语言)过滤它们?
Use LEAST()
select item, least(supplier1, supplier2, supplier3)
from your_table
更改您的架构。
桌子suppliers
supplier_id supplier_name
1 Supplier 1
2 Supplier 2
3 Supplier 3
桌子products
product_id product_name
1 Bike
2 Shoe
3 Ball
桌子prices
product_id supplier_id price
1 1 125.65
1 2 132.01
1 3 120.43
2 1 23.99
2 2 19.99
2 3 25.96
3 1 5.50
3 2 8.65
3 3 6.50
您的查询
SELECT product_name, supplier_name, price
FROM prices
INNER JOIN products ON products.product_id = prices.product_id
INNER JOIN suppliers ON suppliers.supplier_id = prices.supplier_id
GROUP BY prices.product_id
HAVING price = MIN(prices.price)