私はMySQLのクエリで立ち往生してきました。テーブルには、次のとおりです。クエリ - 分(コスト)とそのコストのサプライヤを表示
CREATE TABLE items_costs (
UPC varchar(15) NOT NULL,
SupplierID int(11) NOT NULL,
Current_as_of_Date datetime DEFAULT NULL,
Cost1 float DEFAULT NULL,
Cost2 float DEFAULT NULL,
Cost3 float DEFAULT NULL,
MSRP float DEFAULT NULL,
MAP float DEFAULT NULL,
Unique_Entry_Id datetime DEFAULT NULL,
PRIMARY KEY (UPC,SupplierID),
KEY SupplierID (SupplierID),
CONSTRAINT items_costs_ibfk_1 FOREIGN KEY (UPC) REFERENCES items (UPC),
CONSTRAINT items_costs_ibfk_2 FOREIGN KEY (SupplierID) REFERENCES suppliers (SupplierID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8`
私は各項目のCost1、Cost2、Cost3の最低を取得しています:今、私はその特定のコストに関連付けられている仕入先を取得する必要があり、しかし
MIN(LEAST(IFNULL(ic.Cost3, ic.Cost1), IFNULL(ic.Cost2, ic.Cost1), ic.Cost1)) AS Cost
私が試してみた:
SELECT
ic.UPC,
ic.SupplierID,
ic.Current_as_of_Date,
ic.Cost1 AS Cost,
ic.MSRP,
ic.MAP,
s.SupplierName,
s.Map_YN AS Supplier_MAP
FROM
items_costs AS ic
JOIN
suppliers AS s ON s.supplierId = ic.SupplierID
WHERE
(ic.upc , ic.Cost1) IN (SELECT
ic_min.UPC,
MIN(LEAST(IFNULL(ic_min.Cost3, ic_min.Cost1),
IFNULL(ic_min.Cost2, ic_min.Cost1),
ic_min.Cost1)) AS Cost
FROM
items_costs ic_min
GROUP BY ic_min.UPC))
を...他のスレッドで推奨されているように、UPCによって最小のコストを与えます。しかし、依然としてユニークでなければならない重複したUPCを取得しています。
私はここで間違っていますか?
ありがとうございます!