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を最初の選択がオンになっているものと一致させる方法がわからないことです。データベースにある番号に置き換えると、機能します....

そのvarを参照する方法を誰か助けてもらえますか?または、これを行う方法に関する別の解決策はありますか?

さらに情報が必要な場合は、できるだけ早く提供します。

4

1 に答える 1

1

スキーマの理解が間違っている場合は、修正してください。

  • lw_comenzi_confirmatenumeおよびtel顧客を含みます。
  • lw_comenzi_confirmate注文の詳細が含まれています (同じ表)。
  • 1 つの注文はテーブルに複数のエントリを持つことができ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 に答える