0

次のような売り手テーブルを示す mysql テーブルがあります。

advertiseid[pk] | customerid[fk] | productsid[fk] | quantites_advertised | price_advertised
------------------------------------------------------------------------------------------
      1               2                2                4.00                 2.00 
      2               4                3                5.00                 2.50
      3               3                2                1.00                 1.00

最初のレコードは..これは、顧客 ID 2 がチョコレート (製品 ID 1) を 4KG で £2.00 で販売していることを意味します。

クエリがさまざまな製品の最小値を表示するように、各製品 ID を選択したかったので、テーブルは次のようになります。

advertiseid[pk] | customerid[fk] | productsid[fk] | quantites_advertised | price_advertised
    ------------------------------------------------------------------------------------------
          2               4                3                5.00                 2.50
          3               3                2                1.00                 1.00

製品 3 が最も安い価格を持つ唯一の製品であり、製品 2 の 4.00 と 1.00 の間の最小価格は 1.00 であるため、クエリは製品 2 と 3 の最小価格を出力します。したがって、これが出力されます。さまざまな製品を持っているとしますが、どうすればこのようなことを達成できるでしょうか? このクエリを試しましたが、正しくありません。:

select c.Fname p.ProductName, s.ProductID, s.Quantity, s.Price 
FROM sellers s, products p, customer c
WHERE s.Price = (select MIN(Price) FROM sellers WHERE 
p.ID=s.ProductID AND c.ID=s.cid);

期待される出力を達成する方法を知っている人はいますか?

4

1 に答える 1

0

フィルタリングを使用できますinner join

select  *
from    YourTable yt
join    (
        select  productsid
        ,       min(price_advertised) as min_price_advertised
        from    YourTable
        group by
                productsid
        ) filter
on      filter.productsid = yt.productsid
        and filter.min_price_advertised = yt.price_advertised
于 2013-02-17T17:24:03.973 に答える