我正在尝试查询销售报告,其中将显示销售代码、日期、产品数量(仅)、门票数量、总销售值(value)以及员工的姓名。 Click here to see the connection between the tables 我正在使用的查询不会返回错误,而只会返回一行,即使销售表上没有任何内容,或者即使它充满了它们
select sales.codv
, customers.name as customers
, concat(day(datav),'/',month(datav),'/',year(datav)) as date
, sum(prod_sal.amount) as 'products'
, count(tickets.codb) as 'tickets'
, sum(ifnull(products.preco,0) * ifnull(prod_sal.amount,0) +
ifnull(tickets.price,0)) as 'total/€'
, employees.nome as employee
from sales
LEFT JOIN customers ON customers.codc=sales.codc
INNER JOIN employees ON employees.codf=sales.codf
LEFT JOIN prod_sal ON prod_sal.codv=sales.codv
LEFT JOIN products ON products.codp=prod_sal.codp
LEFT JOIN tickets ON tickets.codv=sales.codv
注意:datav 是销售日期
最佳答案
如果您不使用group by
子句,MySQL将假定您要聚合与where
子句匹配的所有行。由于您没有 where
子句,因此这就是数据库中的所有内容。
select
sales.codv
, customers.name as customers
, concat(day(datav),'/',month(datav),'/',year(datav)) as date
, sum(prod_sal.amount) as 'products'
, count(tickets.codb) as 'tickets'
, sum(ifnull(products.preco,0) * ifnull(prod_sal.amount,0) + ifnull(tickets.price,0)) as 'total/€'
, employees.nome as employee
from
sales
LEFT JOIN customers
ON customers.codc=sales.codc
INNER JOIN employees
ON employees.codf=sales.codf
LEFT JOIN prod_sal
ON prod_sal.codv=sales.codv
LEFT JOIN products
ON products.codp=prod_sal.codp
LEFT JOIN tickets
ON tickets.codv=sales.codv
group by
sales.codv
, customers.name
, concat(day(datav),'/',month(datav),'/',year(datav)) as date
关于mysql - 选择有很多表的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44989363/