2016-09-09 14 views
0

私は2つのテーブルがあります。2か月から月数と日数のある月を取得するにはどうすればよいですか?

a)は、クライアント

clients_id conn_date 
======================= 
1    2016-06-01  
2    2016-07-17 
3    2016-06-22 
4    2016-09-03 

b)は、今、私はすべての月日とクライアントの月数とを表示したい

cpp_id  clients_id paid_month 
=================================== 
1   1    2016-07-03 
2   2    2016-07-22 
3   4    2016-09-09    
4   2    2016-07-22 

をclients_pay_bill現在の日付まで支払われません。例えば

clients_id = 1接続日(conn_dateは)2016年6月1日であり、彼は唯一の今まで2016年7月3日月の法案を支払いました。だから、SQLクエリは、数ヶ月次のような出力になります。

2016-06 
2016-08 
2016-09 
**2016-07 will not print because he already paid this months bill** 

、私はまた、日や月などの数を表示したい:3ヶ月何日かは...

はどのようにSQLクエリがすべき私は想像することはできませんのように見える ?

答えて

-1

は、その後、あなたがCURRENT_DATEするconn_dateからのすべての日付の配列を取得するためにPHPを使用することができ

SELECT conn_date FROM clients WHERE client_id = <your_client_id> 

そして

SELECT paid_month FROM clients_pay_bill WHERE clients_id = <your_client_id> 

を実行することにより、conn_dateだけでなく、クライアントのpaid_month秒を取得します。

次に、foreach dateがpaid_month配列に存在するかどうかをチェックします。いいえの場合は、表示します。ここで

擬似コードはご返信用

$start = (new DateTime(conn_date)); 
$end  = date(Y-m-d); 
$interval = DateInterval::createFromDateString('1 month'); 
$period = new DatePeriod($start, $interval, $end); 

foreach ($period as $dt) { 
    if(!in_array($dt,$paidMonthArray)) { 
     display($dt(Y-m)); 
    } 
} 
+0

おかげです。あなたは私に働いているSQLクエリplzを表示できますか? –

+0

私は答えました。 PHPを使用して2つのSQLクエリを実行します。次に、conn_dateからcurrent_dateまでのすべての月の配列を取得します。fore_archがpaid_month配列に存在するかどうかをチェックします。いいえ、その月を表示してください –

+0

Oh ..私のコードは恐ろしいことになる –

関連する問題