0

下の画像のように価格情報のテーブルを取得しました。データベースにクエリを実行して、「アイテム」と最も安いサプライヤーの値を返そうとしています。

データベース値

したがって、下の表の場合は次のようになります

  • 自転車、サプライヤー 3 - 120.43
  • 靴、サプライヤー 2 - 19.99
  • ボール、サプライヤー 1 - 5.50

これはSQLクエリで可能ですか、それともすべての値を出力してからphp(または選択した言語)でフィルタリングする必要がありますか?

4

2 に答える 2

6

LEAST()を使用する

select item, least(supplier1, supplier2, supplier3)
from your_table
于 2013-06-29T16:29:30.123 に答える
1

スキーマを変更します。

テーブル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)
于 2013-06-29T16:37:11.940 に答える