2015-03-18 50 views
0

我有四個表所示:一個複雜的MySQL查詢獲取日期

- accounts 
1. id 
2. register_date 
3. package 
4. status 

- company 
1. id 
2. brand 
3. account_id 

- packages 
1. id 
2. title 
3. experience (for example that package's time is 30 day, it will expire after that and related account's status will be 0) 

Example scenario: 

accounts 
------------ 
id=>1 
register_date=>2015-01-27 23:36:38 
package=>1 
status=>1 

company 
------------ 
id=>1 
brand=>Burger King 
account_id=>1 

packages 
------------ 
id=>1 
title=>Economic Package 
experience=>30 

現在,我只是想查找誰的帳戶將在10天后到期。 在我的小腦袋裏,我想我會將包的經驗添加到帳戶的註冊日期,並從當前時間減去它,並檢查它是否小於或等於10.我需要它在單個查詢中,但我的mysql知識不夠大,無法解決此問題。感謝您的每一個答案...

+0

你不能只是一個隨機數添加到日期。例如2015年3月18日+ 30分是什麼? 3月38日? 2048?這就是說,你** CAN **在數據庫中的日期,例如, 'select * from yourtable WHERE register_date 2015-03-18 20:53:54

回答

1

這裏是你在找什麼...

SELECT `accounts`.* 
FROM `accounts` 
    INNER JOIN `packages` ON `packages`.`id` = `accounts`.`package` 
WHERE DATEDIFF(DATE_ADD(`accounts`.`register_date`,INTERVAL `packages`.`experience` DAY) ,NOW()) = 10 
+0

謝謝兄弟!我要試一試,但我只想從公司獲得品牌名稱:) – user3289406 2015-03-18 21:03:02

-1

查詢是你所有的軟件包設置爲30?或者它們中的一些更小,並且已經小於10,如果是這樣的話,那麼您可以通過剩餘活動時間查詢它們。

+0

這是一個評論,而不是回答 – cmorrissey 2015-03-18 20:52:44

+0

nope,455天和30天。 – user3289406 2015-03-18 20:54:03

+0

沒有足夠的代表,只是想幫助。 – Thorx99 2015-03-18 20:54:33