如何获得活跃的客户? SQL查询

时间:2013-11-25 08:48:47

标签: mysql

我正在尝试为某人制作某种导出功能,将其客户端导出为CSV。 它有点工作,除了我没有得到希望的结果。债务人可以有多个订阅(abonnement)。如果他将来至少有一个订阅结束日期,那么如果它没有非活跃客户,那么它就是一个活跃的客户。

我现在有以下查询:

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

通过此查询,如果客户过去有任何带有enddate的订阅,即使它具有未来enddate的订阅,它也会显示在非活动客户中。

colum datum_dienst_tot是订阅结束日期。

如何通过查看所有客户订阅来使查询仅返回非活动客户?

谁能指出我正确的方向?

非常感谢!

1 个答案:

答案 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