2013-03-01 52 views
-1

我有4個表的數據庫,Mysql的形成新的優化查詢

用戶數,優惠券,佔

從下列條件需要用戶數:

  1. 從users表中選擇所有用戶然後
  2. 選擇用戶不在最近14天列表中的計數,然後
  3. 選擇不在列表中的用戶,檢查是否存在coup桌上。如果他們沒有在優惠券表中,那麼把這些用戶ID然後
  4. 選擇帳戶表,並檢查這些用戶有任何計數或插入帳戶表中。如果是,則將所有這些用戶設置爲數組或將其打印出來。

請有人幫助我形成好的查詢嗎?

謝謝!

+0

你做了什麼? – 2013-03-01 10:09:42

+0

你能輸出所有表格之間的確切關係嗎?全部輸入並不會造成傷害。不要忘記在反引號(「\'」)之間放置'count',因爲'count'是一個用於計數操作的保留的mysql字符。' – Timmetje 2013-03-01 10:11:49

+0

用戶有計數(一對多),有優惠券的用戶(一對一),有帳號的用戶(一對多) – Akaash 2013-03-01 10:15:41

回答

1

如果我是右收用戶

  • 不是伯爵表在過去14天 和
  • 不是在優惠券表。 和
  • 在賬戶表

看起來像一個奇怪的SQL,但這裏有是一個例子:

SELECT 
    * 
FROM 
    user 
WHERE user_id NOT IN 
    ( 
     SELECT 
      user_id 
     FROM 
      `count` 
     WHERE 
      DATE_SUB(CURDATE(),INTERVAL 14 DAY) <= date_column 
    ) 
AND user_id NOT IN 
    (
     SELECT 
      user_id 
     FROM 
      coupon 
    ) 
AND user_id IN 
    (
     SELECT 
      user_id 
     FROM 
      account 
    ) 

如果這是不對的,你你想要什麼解釋是錯誤的,應該澄清。 這一切都可能是錯誤的SQL,因爲我不知道你的列(用戶ID?日期?)。但我認爲你可以改變你的喜好的SQL。

+0

和USER_ID NOT IN ( 選擇 user_id說明 FROM 優惠券 )我可以用where子句優惠券後,在這裏等,其中COUPON_CODE = '某某'? – Akaash 2013-03-01 13:00:56

+0

是的,你可以輕鬆做到這一點,祝你好運 – Timmetje 2013-03-01 22:03:12