2

在对mysql表中的一些元素进行分组后,我有一个关于计数的小问题,我有一个订单表..其中每个订单都有几行按代码分组(命名为codcomanda)......我必须做一个查询计算每个客户的订单数量,并仅列出订单的名称和数量。

这就是我想出的(这可能很愚蠢......我不是专业程序员)

SELECT a.nume, a.tel, (
    SELECT COUNT(*) AS `count` 
      FROM (
        SELECT id AS `lwtemp` 
          FROM lw_comenzi_confirmate AS yt 
         WHERE status=1 AND yt.tel LIKE **a.tel** 
         GROUP BY yt.codcomanda
      ) AS b
  ) AS numar_comenzi 
  FROM lw_comenzi_confirmate AS a 
 WHERE status=1 
 GROUP BY tel;

nume = NAME
tel = PHONE(这是客户端的唯一标识符,因为没有登录系统)

上述查询的问题是我不知道如何将a.tel与第一个选择所在的那个匹配。如果我用数据库中的数字替换它,它就可以工作......

谁能帮助我如何引用该变量?或者关于如何完成这项工作的另一种解决方案?

如果需要更多信息,我会尽快提供。

4

1 回答 1

1

如果我对您的架构的理解有误,请纠正我:

  • lw_comenzi_confirmate包含numetel属于客户;
  • lw_comenzi_confirmate包含订单详情(同一张表);
  • 一个订单在表中可以有多个条目lw_comenzi_confirmate,订单以codcomanda字段区分。

首先,我强烈建议阅读有关规范化和修复数据库设计的内容。

以下应该为您完成这项工作:

SELECT nume, tel, count(DISTINCT codcomanda) AS cnt
  FROM lw_comenzi_confirmate
 WHERE status = 1
 GROUP BY nume, tel
 ORDER BY nume, tel;

您可以在SQL Fiddle上测试此查询。

于 2012-05-16T06:18:25.513 回答