2015-05-26 14 views
1

3代表與功能我寫,因爲我有3個表導出數據愨在單個查詢

  1. 負荷消費(ID,名字,姓氏)

  2. 銷售額1(ID,costumer_id,價格,SALE_DATE)

  3. sales2(ID,costumer_id,價格,SALE_DATE)

我需要做一個查詢,按照客戶的銷售數量,銷售額(即兩個表)和最後一個銷售日期的數量,僅導出一行。所有這些東西都在兩個日期之間輸出。

我已經嘗試了工會,但我不能得到負荷消費數據

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')) 

這之後,我已經嘗試了內部銷售表之間的連接,但我得到一個表,重複值

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'))); 

所以,我有兩個問題:

  1. 進行查詢,我可以得到正確的數據
  2. 在查詢中添加一個函數,該函數僅由costumer在兩個表中的銷售數量,價格總數和最後一個銷售日期之間導出。

我需要從一個查詢中導出MySQL(這是一個挑戰)。請原諒我可憐的英語。

+0

出了什麼問題'SALE_DATE> =「2001-04-01''?除此之外,如果您願意,可以考慮遵循以下簡單的兩步式操作:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您還沒有這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry

回答

1

我相信你正在尋找的是這樣的:

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; 
+0

這解決了我的問題,但仍然有一個錯誤,是數字操作系統銷售的結果,銷售總額爲一更多的預期。 –

+0

@SchwartsHiddwnbroug我用正確的更新了我的查詢。我想這會發生在我睡了兩個小時的時候。 [Here](http://sqlfiddle.com/#!9/d3097/6)是一個顯示結果的sql小提琴。 – JRLambert