下の画像のように価格情報のテーブルを取得しました。データベースにクエリを実行して、「アイテム」と最も安いサプライヤーの値を返そうとしています。
したがって、下の表の場合は次のようになります
- 自転車、サプライヤー 3 - 120.43
- 靴、サプライヤー 2 - 19.99
- ボール、サプライヤー 1 - 5.50
これはSQLクエリで可能ですか、それともすべての値を出力してからphp(または選択した言語)でフィルタリングする必要がありますか?
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)