2017-08-30 83 views
-2

之前,我有以下兩個表:找到有買東西的客戶不

  1. ordersorderid | orderdate | userid | ...
  2. usersuserid | ...

在哪裏加入他們兩個:

SELECT * FROM orders 
JOIN users ON orders.userid = users.id 

以獲得用戶提交的所有訂單的表格。

現在我需要那些買了東西2016年11月1日 和2017-31-01之間的所有客戶:

  1. 至少2016年11月1日之前一次,也是2016-11間-01和2017-02-01和
  2. 在2016-11-01之前沒有什麼,但是在2016年1月1日和2017年1月1日之間的 之間第一次買了東西。

幫助非常感謝。

+0

你的問題是什麼?爲什麼downvotes? –

+1

發佈樣本數據和期望的輸出。 –

+0

好的,對不起。 @Baro解決了它。謝謝。 –

回答

2

他們可能給你反對票,因爲你沒有包括一個測試,你試過的查詢。看起來你完全委託了這份工作。

無論如何,這是一個未經測試的查詢,日期通常與該地區有關的問題。考慮它作爲你如何做的想法(可能會有更清潔的方法):

SELECT * FROM users WHERE 
    EXISTS (SELECT * FROM orders 
     WHERE orderdate >= CONVERT(datetime, '2016-11-01' , 101) 
     AND orderdate <= CONVERT(datetime, '2017-31-01' , 101) 
     AND userid = users.id) 
    AND 
    NOT EXISTS (SELECT * FROM orders 
     WHERE orderdate <= CONVERT(datetime, '2017-31-01' , 101) 
     AND userid = users.id) 
+0

@Dananley絕對贊同您!編輯:) – Baro

+0

我真的很抱歉。我實際上是用第一個查詢的'INTERSECT'和第二個查詢的'EXCEPT'來解決它的。我真的很抱歉使用你的時間。不過謝謝。我也嘗試你的查詢!謝謝 –

+0

@implicit_knowledge不要原諒我。我很高興你解決了,甚至更多,如果你一個人做了:) – Baro