2012-01-15 43 views
-1

我在Mysql數據庫中有兩個表。如何解決這種查詢?

PACKAGES:

​​

實施例:

1 | 1 | Package AAA_1 | INTERVAL 7 DAY | 1 
2 | 2 | Package BBB_1 | INTERVAL 1 YEAR | 1 
3 | 1 | Packaga AAA_2 | INTERVAL 14 DAY | 1 

訂閱:

id (auto_increment) 
id_user (INT) 
id_package (INT) // It points to packages.id 
date (DATETIME) 

實施例:

1 | 1 | 1 | 2012-01-06 00:04:18 

我的問題是,一個單一的用戶可以有更多的訂閱相同的包(因爲當訂閱到期將有一個新的訂閱,我需要跟蹤所有以前的訂閱,以瞭解每個用戶的「故事」 )

現在,我要創建一個查詢,提取所有的包(其中packages.visible=1ORDER BY packages.category)和

CHECK

什麼是用戶包裝的實際到期。

如您所見,我有subscriptions.date(這是用戶訂購的日期),那麼我必須在此日期添加packages.expiry以瞭解真實到期的DATE。很明顯,我只需要將subscription.date + package.expiry添加到用戶對該特定軟件包的訂閱LAST

編輯:

很顯然,我必須通過這個疑問,我想檢查用戶的ID。

回答

1

此選擇語句會爲您提供您需要的信息,但由於包裹過期字段似乎是自由形式的文本,我不認爲有辦法將其添加到最後訂閱日期。

SELECT subscriptions.id_user, packages.name, MAX(subscriptions.date), packages.expiry 
FROM subscriptions JOIN packages ON subscriptions.id_package = packages.id 
WHERE packages.visible = 1 
GROUP BY subscriptions.id_user, subscriptions.id_package 
ORDER BY packages.category