Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询-min(成本)并显示该成本的供应商_Mysql - Fatal编程技术网

Mysql 查询-min(成本)并显示该成本的供应商

Mysql 查询-min(成本)并显示该成本的供应商,mysql,Mysql,我被一个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 DE

我被一个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`
每件商品的成本是1、2、3中最低的:

MIN(LEAST(IFNULL(ic.Cost3, ic.Cost1), IFNULL(ic.Cost2, ic.Cost1), ic.Cost1)) AS Cost
但是,现在我需要获取与该特定成本相关联的供应商ID

我试过:

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,这应该是唯一的

我在这里做错了什么


非常感谢

您可以使用DISTINCT

    SELECT DISTINCT 
      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))

你可以使用不同的

    SELECT DISTINCT 
      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))
谢谢你的帮助

我在这里找到了答案,这似乎是一个常见的问题:

谢谢你的帮助

我在这里找到了答案,这似乎是一个常见的问题: