Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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_Mysql_Subquery_Operation - Fatal编程技术网

具有三个子查询操作的行-Mysql

具有三个子查询操作的行-Mysql,mysql,subquery,operation,Mysql,Subquery,Operation,我试图用3个字段进行查询,其中一个是产品类型,另一个是今天的日期,另一个是两个表的计算,我遇到的问题是两个表的计算 我无法显示所有记录,因为此计算显示了多条记录,因此查询出现错误:“操作数应包含1列”,因此,如果我将这些查询限制为1,则可以正常工作,但只显示一条记录,我希望显示所有存在的记录 我需要做什么取决于三个表: 表顺序: id,fecha_entrega,unidades,id_formatopeso。。。 翻译: id、交货日期、单位、id重量格式 表格重量格式: 身份证格式、身份证

我试图用3个字段进行查询,其中一个是产品类型,另一个是今天的日期,另一个是两个表的计算,我遇到的问题是两个表的计算

我无法显示所有记录,因为此计算显示了多条记录,因此查询出现错误:“操作数应包含1列”,因此,如果我将这些查询限制为1,则可以正常工作,但只显示一条记录,我希望显示所有存在的记录

我需要做什么取决于三个表:

  • 表顺序: id,fecha_entrega,unidades,id_formatopeso。。。 翻译: id、交货日期、单位、id重量格式

  • 表格重量格式: 身份证格式、身份证格式、最低库存。。。 翻译: id\u权重格式、格式\u类型、最低库存

  • 表存货: 身份证,身份证披萨,fecha,身份证 翻译: id\u库存,库存\u比萨饼,日期,id\u重量格式 我需要一个运算来计算:

查询添加子查询是:

  • 订单的
    单位
    ,以及每个产品今天的交货日期(重量格式)
  • 减去 每个产品的
    库存
    表中最后一条记录的
    库存
    (重量格式)
  • 总数 每种产品的库存最小值(重量格式)
  • 表2(订单):

    表A Formatopeso(重量格式)

    塔布拉股票

    +----------+-------------+------------+----------------+
    | id_stock | stock_pizza | fecha      | id_formatopeso |
    +----------+-------------+------------+----------------+
    |        2 |          50 | 2017-10-25 |              2 |
    |        7 |         200 | 2017-11-09 |              7 |
    |        6 |         300 | 2017-11-09 |              6 |
    +----------+-------------+------------+----------------+
    
    Pedidos tipo_formato:20Ø150gr id=7; 450(unidades餐桌订单)–200(库存+比萨餐桌库存)+150(最低库存)=400(比萨餐桌库存)

    Pedidos tipo_formato:22Ø180gr id=6; 500(unidades餐桌订单)–300(库存+比萨餐桌库存)+150(最低库存)=350(比萨餐桌库存)

    我需要展示这样的东西:

    +--------------+---------------+-------------+
    | format_type  |pizza_operation|  date_today |
    +--------------+---------------+-------------+
    | tipo_formato | pizza_calculo |  fecha_hoy  |
    +--------------+---------------+-------------+
    | 20Ø 150gr    |           400 |  2017-11-09 |
    +--------------+---------------+-------------+
    | 22Ø 180gr    |           350 |  2017-11-09 |
    +--------------+---------------+-------------+
    
    我的查询不起作用:

    SELECT formatopeso.tipo_formato, 
       (SELECT unidades FROM pedidos WHERE DATE(fecha_entrega) = DATE(NOW())) 
       -
       (SELECT stock_pizza FROM stock WHERE fecha = (SELECT MAX(fecha) FROM stock)LIMIT 1)
       +
       (SELECT stock_minimo FROM formatopeso LIMIT 1)
       as pizza_calculo, 
       (SELECT CURDATE())
       as fecha_hoy
    FROM pedidos
    INNER JOIN formatopeso
    ON formatopeso.id_formatopeso = pedidos.id_formatopeso
    WHERE pedidos.fecha_entrega IN (CURDATE())
    GROUP BY formatopeso.tipo_formato;
    

    您应该加入表,而不是使用
    SELECT
    中的子查询。使用中的技术在
    库存
    表中获取每个产品的最新记录

    SELECT f.tipo_formato, p.unidades - s1.stock_pizza + f.stock_minimo AS pizza_calculo, p.fecha_entrega AS date_today
    FROM pedidos AS p
    JOIN formatopeso AS f ON f.id_formatopeso = p.id_formatopeso
    JOIN stock AS s1 ON s1.id_formatopeso = p.id_formatopeso
    JOIN (SELECT id_formatopeso, MAX(fecha) AS max_fecha
          FROM stock
          GROUP BY id_formatopeso) AS s2
        ON s1.id_formatopeso = s2.id_formatopeso AND s1.fecha = s2.max_fecha
    WHERE p.fecha_entrega = CURDATE()
    

    如果不查看从中获取数据的表,很难判断您要做什么。另外,请添加表之间关系的说明,以及查询应该做什么。从查询中很难理解,因为名称不是英文的。感谢您的帮助Barmar,修复帖子,我对由此造成的不便表示歉意。显示原始数据仍然会有帮助,您的解释没有多大帮助。对不起,我已经用所有必要的信息修改了这篇文章,以了解我想做什么,再次感谢。你不知道我有多感激你的帮助,酒吧招待员,你一直在教我如何理解一个复杂的查询(对我来说)。我感谢你的兴趣,我很抱歉我以错误的方式创建了这篇文章。它的工作非常完美,也感谢你放了一个演示。
    SELECT formatopeso.tipo_formato, 
       (SELECT unidades FROM pedidos WHERE DATE(fecha_entrega) = DATE(NOW())) 
       -
       (SELECT stock_pizza FROM stock WHERE fecha = (SELECT MAX(fecha) FROM stock)LIMIT 1)
       +
       (SELECT stock_minimo FROM formatopeso LIMIT 1)
       as pizza_calculo, 
       (SELECT CURDATE())
       as fecha_hoy
    FROM pedidos
    INNER JOIN formatopeso
    ON formatopeso.id_formatopeso = pedidos.id_formatopeso
    WHERE pedidos.fecha_entrega IN (CURDATE())
    GROUP BY formatopeso.tipo_formato;
    
    SELECT f.tipo_formato, p.unidades - s1.stock_pizza + f.stock_minimo AS pizza_calculo, p.fecha_entrega AS date_today
    FROM pedidos AS p
    JOIN formatopeso AS f ON f.id_formatopeso = p.id_formatopeso
    JOIN stock AS s1 ON s1.id_formatopeso = p.id_formatopeso
    JOIN (SELECT id_formatopeso, MAX(fecha) AS max_fecha
          FROM stock
          GROUP BY id_formatopeso) AS s2
        ON s1.id_formatopeso = s2.id_formatopeso AND s1.fecha = s2.max_fecha
    WHERE p.fecha_entrega = CURDATE()