2012-01-15 69 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