我有一張價格信息表如下圖所示,即時試圖查詢數據庫,讓我回到'項目'和最便宜的供應商值。查找數據庫的每一行的最低值-sql
因此,對於在它下面的表將是
- 自行車,供應商3 - 120.43
- 鞋,供應商2 - 19.99
- 球,供應商1 - 5.50
這是可能做與SQL查詢,或者你需要輸出所有的值和然後用php(或選擇的語言)過濾它們?
我有一張價格信息表如下圖所示,即時試圖查詢數據庫,讓我回到'項目'和最便宜的供應商值。查找數據庫的每一行的最低值-sql
因此,對於在它下面的表將是
這是可能做與SQL查詢,或者你需要輸出所有的值和然後用php(或選擇的語言)過濾它們?
使用LEAST()
select item, least(supplier1, supplier2, supplier3)
from your_table
SQLite是否支持LEAST()? –
似乎並不如此。見[這裏](http://sqlfiddle.com/#!7/d41d8/352) –
也許有一個等同物,只是名稱不同而已。我找不到一個。 –
更改您的架構。
表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)
這是一個糟糕的模式來做你想做的事情。如果有一千個供應商呢? – wallyk
https://en.wikipedia.org/wiki/Database_normalization –
正如Wallyk所說,這不是一個好的模式設計。突圍供應商到另一個表。然後你有一個產品表。你有一個定價表,它有產品和供應商的外鍵 – bryanmac