【问题标题】:mysql/php unsure how to build specific querymysql/php 不确定如何构建特定查询
【发布时间】:2011-05-07 10:12:43
【问题描述】:

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

为了简单起见,假设“客户”表如下所示

身份证, 客户名称

'sale_entry' 表看起来像这样

身份证, 客户ID, 入口日期, sale_type(可以是 0=常规,1=现货,2=合约)

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

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    完成了几个子查询。

    $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';
    

    【讨论】:

    • 如果您能想到更有效的方法,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2012-05-26
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多