mysql / php不确定如何构建特定的查询

时间:2010-12-03 17:11:45

标签: mysql sql

我正在使用PHP和MySQL。我有两个表,一个用于客户,一个用于销售条目。我的目标是提出过去一年中有超过三个常规销售条目的5个客户的列表,但过去三个月中任何类型的零销售条目(基本上是最近停止购买的常客)。同时,我想获取每个客户的最新销售条目的日期,并且还按照他们最近的销售进入日期向下订购客户列表。这也应该将结果限制在5个客户。

为简单起见,我们假设“客户”表格看起来像这样

ID, CUSTOMER_NAME

并且'sale_entry'表格如下所示

ID, 顾客ID, ENTRY_DATE, sale_type(可以是0 =常规,1 =现货,2 =合同)

sale_entry表中的customer_id字段当然与customer表中的id字段有关。关于如何最好地检索所需数据的任何想法都是受欢迎的。

1 个答案:

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