2013-11-25 51 views
0

我正在嘗試爲某人導出某種導出功能,將其客戶端導出爲CSV。 它有點工作,除了沒有得到預期的結果。債務人可以有多個訂閱(abonnement)。如果他將來至少有一次訂閱結束日期,那麼它是一個活躍的客戶,如果它沒有非活躍的客戶。如何獲得積極的客戶? SQL查詢

現在我有以下查詢:

SELECT debiteur.bedrijf_naam, adres.straat, adres.huisnr, 
     adres.huisnr_toev, adres.postcode, adres.plaats FROM debiteur 
LEFT JOIN adres ON adres.debiteur_id = debiteur.id 
LEFT JOIN abonnement ON abonnement.debiteur_id = debiteur.id 
LEFT JOIN abonnement_site_rubriek ON abonnement_site_rubriek.abonnement_id = abonnement.id 
WHERE adres.adres_rol = 'post' AND 
     abonnement_site_rubriek.rubriek_id IN (872,899) AND 
     abonnement.datum_dienst_tot < DATE(NOW()) 
GROUP BY debiteur.id 

與此查詢,如果客戶有與過去的結束日期的任何預訂,即使它與未來的結束日期訂閱,它會顯示在不活躍的客戶。

colum datum_dienst_tot是訂閱結束日期。

如何通過查看所有客戶訂閱來使查詢返回僅非活動客戶?

誰能指點我正確的方向?

非常感謝!

+0

你如何定義未來的結束日期? – DevelopmentIsMyPassion

+0

您可以使用DATE_SUB和DATE_ADD向前移動NOW()日期,因此abonnement.datum_dienst_tot> DATE_SUB(NOW(),INTERVAL 7 DAY)表示在過去7天內處於活動狀態,因此<=在過去7天 – nrathaus

+0

未來結束日期大於今天的日期 –

回答

0

給出的查詢將會帶來那些誰其認購已經結束,你寧願檢查abonnement.datum_dienst_tot是大於今天,因爲它遵循:

SELECT debiteur.bedrijf_naam, adres.straat, adres.huisnr, 
    adres.huisnr_toev, adres.postcode, adres.plaats FROM debiteur 
LEFT JOIN adres ON adres.debiteur_id = debiteur.id 
LEFT JOIN abonnement ON abonnement.debiteur_id = debiteur.id 
LEFT JOIN abonnement_site_rubriek ON abonnement_site_rubriek.abonnement_id = abonnement.id 
WHERE adres.adres_rol = 'post' AND 
    abonnement_site_rubriek.rubriek_id IN (872,899) AND 
    abonnement.datum_dienst_tot > DATE(NOW()) 
GROUP BY debiteur.id 
+0

感謝您的回答。這是2年前,但比從未遲;) –