Mysql 从3个表之间的关系导出数据,并在单个查询中使用函数
我写作是因为我有三张桌子 客户id、名、姓 sales1 id、客户id、价格、销售日期 sales2 id、客户id、价格、销售日期 我需要做一个查询,按客户只导出一行,其中包含销售数量、两个表的销售总额和上次销售日期。所有这些东西都在两个日期之间导出 我尝试了一个联盟,但我无法获得客户数据Mysql 从3个表之间的关系导出数据,并在单个查询中使用函数,mysql,sql,Mysql,Sql,我写作是因为我有三张桌子 客户id、名、姓 sales1 id、客户id、价格、销售日期 sales2 id、客户id、价格、销售日期 我需要做一个查询,按客户只导出一行,其中包含销售数量、两个表的销售总额和上次销售日期。所有这些东西都在两个日期之间导出 我尝试了一个联盟,但我无法获得客户数据 Select * from sales1 where sale_date >=DATE(DATE_FORMAT('2001-04-1','%Y-%m-%d')) and sale_dat
Select *
from sales1
where sale_date >=DATE(DATE_FORMAT('2001-04-1','%Y-%m-%d'))
and sale_date<=DATE(DATE_FORMAT('2010-04-1','%Y-%m-%d'))
union
Select *
from sales2
where sale_date >=DATE(DATE_FORMAT('2001-04-1','%Y-%m-%d'))
and sale_date<=DATE(DATE_FORMAT('2010-04-1','%Y-%m-%d'))
在此之后,我尝试了sales表之间的内部联接,但得到了一个具有重复值的表
Select * from costumer
inner join sales1 on costumer.cliente_id = sales1.cliente_id
inner join sales2 on costumer.cliente_id = sales2.cliente_id
where (sales1.sale_date >=DATE(DATE_FORMAT('2001-04-1','%Y-%m-%d'))
and sales1.sale_date<=DATE(DATE_FORMAT('2010-04-1','%Y-%m-%d')))
and (sales2.sale_date >=DATE(DATE_FORMAT('2001-04-1','%Y-%m-%d'))
and sales2.sale_date<=DATE(DATE_FORMAT('2010-04-1','%Y-%m-%d')));
所以我有两个问题:
做一个查询,我可以得到所有正确的数据
在查询中添加一个函数,该函数仅按客户的行导出两个表中的销售数量、价格总和和上次销售日期。
我需要在一个查询中导出MySQL,这是一个挑战。请原谅我英语不好 我相信您正在寻找的是:
SELECT
sales.id,
COUNT(sales.sales_id) AS sales_count,
SUM(sales.sales_price) AS price_sum,
MAX(sales.sales_date) AS last_sale
FROM
(SELECT
c.id,
s1.id AS sales_id,
s1.price AS sales_price,
s1.sale_date AS sales_date
FROM
customer c
INNER JOIN sales1 s1 ON c.id = s1.customer_id
UNION
SELECT
c.id,
s2.id AS sales_id,
s2.price AS sales_price,
s2.sale_date AS sales_date
FROM
customer c
INNER JOIN sales2 s2 ON c.id = s2.customer_id) AS sales
WHERE
sales.sales_date >= '2001-04-01' AND sales.sales_date <= '2010-04-01'
AND sales.sales_date >= '2001-04-01' AND sales.sales_date <= '2010-04-01'
GROUP BY
sales.id;
销售日期>='2001-04-01'有什么问题?除此之外,如果你愿意,考虑以下简单的两步行动:1。如果您还没有这样做,请提供适当的DDL和/或SQLFIDLE,以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供与步骤1中提供的信息相对应的所需结果集。这可以解决我的问题,但仍然有一个错误,这是number os sales的结果,销售总额比预期多了一个。@SchwartsHiddwnbroug我用正确的结果更新了我的查询。我想当我睡2小时的时候就会发生这种情况。是显示结果的sql小提琴。