mysql 在单个查询中使用函数从3个表之间的关系导出数据

42fyovps  于 2023-03-07  发布在  Mysql
关注(0)|答案(1)|浏览(98)

我写是因为我有三张table

  1. Customer(标识,名字,姓氏)
  2. Sales1(标识,客户标识,价格,销售日期)
  3. Sales2(标识,客户标识,价格,销售日期)
    我需要做一个查询,只导出1行的客户销售数量,销售总额(这两个表)和最后销售日期。所有这些东西之间的两个日期导出。
    我试过工会,但无法获得客户数据
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 customer
inner join sales1 on customer.cliente_id = sales1.cliente_id 
inner join sales2 on customer.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')));

我有两个问题:
1.编写查询以获取所有正确的数据
1.在查询中添加一个函数,该函数只在两个表中按销售数量、价格总和和最后销售日期的客户行导出。
我需要在一个单一的查询从MySQL导出(这是一个挑战)。原谅我的英语差。

1hdlvixo

1hdlvixo1#

我相信你要找的是:

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;

相关问题