我正在使用PHP和MySQL。我有两个表,一个用于客户,一个用于销售条目。我的目标是提出过去一年中有超过三个常规销售条目的5个客户的列表,但过去三个月中任何类型的零销售条目(基本上是最近停止购买的常客)。同时,我想获取每个客户的最新销售条目的日期,并且还按照他们最近的销售进入日期向下订购客户列表。这也应该将结果限制在5个客户。
为简单起见,我们假设“客户”表格看起来像这样
ID, CUSTOMER_NAME
并且'sale_entry'表格如下所示
ID, 顾客ID, ENTRY_DATE, sale_type(可以是0 =常规,1 =现货,2 =合同)
sale_entry表中的customer_id字段当然与customer表中的id字段有关。关于如何最好地检索所需数据的任何想法都是受欢迎的。
答案 0 :(得分:0)
完成了一些子查询。
$query = 'SELECT DISTINCT'
.' customers.id'
.', customers.customer_name'
.', (SELECT MAX(x.entry_date) FROM sale_entry AS x WHERE x.customer_id = customers.id) AS last_purchase_date'
.' FROM customers'
.' WHERE (SELECT COUNT(x.id) FROM sale_entry AS x WHERE x.customer_id = customers.id AND x.type = 0 AND x.entry_date >= \''.date('Y-m-d', strtotime('-1 year')).'\') > 0'
.' AND (SELECT COUNT(x.id) FROM sale_entry AS x WHERE x.customer_id = customers.id AND x.entry_date >= \''.date('Y-m-d', strtotime('-3 months')).'\') = 0'
.' ORDER BY last_purchase_date DESC'
.' LIMIT 5';