Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
在postgresql中从多个表获取数据时,是否得到错误的输出?_Sql_Postgresql - Fatal编程技术网

在postgresql中从多个表获取数据时,是否得到错误的输出?

在postgresql中从多个表获取数据时,是否得到错误的输出?,sql,postgresql,Sql,Postgresql,当我试图运行这个查询时,它给出了错误的输出 SELECT (TO_CHAR(sale_order.date_order,'DD')) AS ORDER_DATE, (TO_CHAR(sale_order.date_order,'DD-mon-yyyy')), SUM(sale_order.amount_total) FROM public.sale_order_line, public.product_product, public.product_template, public

当我试图运行这个查询时,它给出了错误的输出

SELECT
 (TO_CHAR(sale_order.date_order,'DD')) AS ORDER_DATE,
 (TO_CHAR(sale_order.date_order,'DD-mon-yyyy')),
 SUM(sale_order.amount_total)
FROM
 public.sale_order_line,
 public.product_product,
 public.product_template,
 public.product_category,
 public.sale_order
WHERE
 sale_order_line.product_id = product_product.id AND
 product_product.product_tmpl_id = product_template.id AND
 product_template.categ_id = product_category.id AND
 sale_order.id = sale_order_line.order_id AND
 product_category.name = 'Bboy'
 and
 TO_CHAR(sale_order.date_order,'MON') =  'MAR' --${sale_month} AND
 and
 TO_CHAR(sale_order.date_order,'YYYY') = '2015'  --'${sale_year}

GROUP BY
      (TO_CHAR(sale_order.date_order,'DD-mon-yyyy')),
       (TO_CHAR(sale_order.date_order,'DD'))
ORDER BY
 ORDER_DATE ASC
我认为它是行的乘法,但无法求解。
如何解决此问题?

我已使用子查询重写了您的代码。我希望这将帮助您在不增加行数的情况下获取数据

SELECT
 (TO_CHAR(sale_order.date_order,'DD')) AS ORDER_DATE,
 (TO_CHAR(sale_order.date_order,'DD-mon-yyyy')),
 SUM(sale_order.amount_total)
FROM
 public.sale_order 
WHERE
 TO_CHAR(sale_order.date_order,'MON') =  'MAR' --${sale_month} AND
 and
 TO_CHAR(sale_order.date_order,'YYYY') = '2015'  --'${sale_year}
 and exists 
    (select product_category.name 
    from 
        public.product_category 
    inner join 
        public.product_template
    on (product_template.categ_id = product_category.id)
    inner join 
        public.sale_order_line
    on (sale_order_line.product_id = product_product.id)
    where
         sale_order.id = sale_order_line.order_id and
        product_category.name = 'Bboy' 
    )

GROUP BY
      (TO_CHAR(sale_order.date_order,'DD-mon-yyyy')),
       (TO_CHAR(sale_order.date_order,'DD'))
ORDER BY
 ORDER_DATE ASC

也许您可以更详细地了解错误的输出是什么,以及正确的输出是什么样子。SUM的值显示的大于实际值。在这种情况下,请尝试不进行分组的查询,并返回原始销售订单信息。这样,你可以看到它将要求和的记录,你可以决定为什么一个记录不应该在那里。我对您的模式了解不多,但我怀疑这是因为sales_order.amount_total是销售订单的总值,而不仅仅是该订单上“Bboy”销售项目的值。因此,如果你有一个50美元的订单,一辆75000美元的梅赛德斯,那么你使用的价值将是75050美元提示:
和TO-CHAR(sale\u-order.date\u-order,'MON')='MAR'和TO-CHAR(sale\u-order.date\u-order,'yyyyy')='2015'
应替换为
sale\u-order.date和sale\u-order.date>='01-03-2015':date和sale\u-order.date