これは私の簡単な図です:
よく試してみましたが、必要なことを行うことができません。たとえば、購入した顧客のリストを表示する必要があります。
顧客番号 1 ---> 購入:
- チキンスープ 4個
- 肉汁3種
- 2 海老スープ
顧客番号 2 --->購入:
- チキンスープ 1個
- 1 肉汁
- 2 海老スープ
顧客番号 3 --->購入:
- チキンスープ 4個
- 8 肉汁
- えびスープ 1個
私のクエリの結果は次のようになります。
このmysqlクエリを正しく作成するのを手伝ってください
これには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
次に、このクエリの集計を作成して、最も人気のあるアイテムの数を見つけ、それに結合して、どのアイテムであったかを調べることができます。これには、顧客ごとに複数の行が返される可能性があるという欠点があります。