0

これは私の簡単な図です:

関係図

よく試してみましたが、必要なことを行うことができません。たとえば、購入した顧客のリストを表示する必要があります。

顧客番号 1 ---> 購入:

  • チキンスープ 4個
  • 肉汁3種
  • 2 海老スープ

顧客番号 2 --->購入:

  • チキンスープ 1個
  • 1 肉汁
  • 2 海老スープ

顧客番号 3 --->購入:

  • チキンスープ 4個
  • 8 肉汁
  • えびスープ 1個

私のクエリの結果は次のようになります。

クエリ結果

このmysqlクエリを正しく作成するのを手伝ってください

4

1 に答える 1

1

これには2つのアプローチが考えられます。1 つ目は、サブセレクトを使用して、各顧客の最も人気のあるアイテムを照会することです。

SELECT nameCustomer AS customer_name, (
    SELECT idItem
      FROM detailSale
      INNER JOIN sales on sales.idDetail = detailSale.idDetail
      WHERE sales.idCustomer = cliente.idCustomer
      GROUP BY idItem
      ORDER BY SUM(amountBuyItem) DESC
      LIMIT 1
  )
  FROM cliente

このクエリはアイテムの ID のみを表示するため不完全であるため、itemForSale テーブルに参加してその名前を取得する必要があることに注意してください。

もう 1 つの方法は、各顧客のすべてのアイテムを人気順に表示するクエリから始めることです。

SELECT idCustomer, idItem, SUM(amountBuyItem) AS totalBuyItem
  FROM detailSale
  INNER JOIN sales on sales.idDetail = detailSale.idDetail
  GROUP BY idCustomer, idItem
  ORDER BY idCustomer, idItem DESC

次に、このクエリの集計を作成して、最も人気のあるアイテムの数を見つけ、それに結合して、どのアイテムであったかを調べることができます。これには、顧客ごとに複数の行が返される可能性があるという欠点があります。

于 2012-09-29T23:05:10.683 に答える