私は以下のシナリオを持っています。私は3つのテーブル(ユーザー、売上、sales_details)を持っています。Sales to Salesとsales_detailsの関係は1対1です。 私はすべての3つのテーブルに問題なく参加して、各ユーザーのすべての販売を取得するクエリを実行しています。 クエリは、私が今、何をしたいのか、この選択中のMySQLサブクエリ
SELECT s.month as month,u.name as name, s.year as year, s.date as date,sum(sd.qty) as qty,sum(sd.qty*sd.value) as value,s.id as id,sum(sd.stock) as stock,s.currency as currency,s.user as user
FROM sales as s
left join sales_details as sd on s.id = sd.Sales
inner join users as u on s.user = u.Id
group by s.Id
のようになりますサブクエリになり、私のクエリに余分なフィールドを追加することです。
SELECT SUM(total) AS total_yearly
FROM (
SELECT sum(qty) as total
FROM sales
left join sales_details on sales.Id = sales_details.Sales
WHERE ((month <= MONTH(NOW()) and year = YEAR(NOW()))
or (month >= MONTH(Date_add(Now(),interval - 12 month)) and year = YEAR(Date_add(Now(),interval - 12 month))))
and User = **ID OF USER**) as sub
このクエリでは、過去12か月間のユーザーの売上がわかりますが、元のクエリでは1か月になります。結果はユーザーごとに同じであることがわかりますが、他の計算には結果が必要です。 私の問題は、サブクエリが元のユーザーIDを読み取るように2つのクエリを結合する方法です。
ありがとうございます!
「SUM(合計)」を行う必要があるのはなぜですか? 「合計」は1つだけなので、合計は値と同じです。 – Barmar
2番目のクエリを 'GROUP BY User'に変更し、2つのクエリ' ON s.id = sub.User'を結合します。 – Barmar
あなたは合っている(合計)無駄です。あなたは、参加の完全な例を挙げることができますか? – user518543