これはおそらくLINQプロのスナップですが、これは私の基本容量を超えています。LINQ複雑な親/子/親/子関係にわたるクエリ
Stores { Storeid, Description }
ShoppingDays { ShoppingDayid, Date, Storeid }
Transactions { Transactionid, Amount, ShoppingDayid, PaintColorid }
PaintColors { PaintColorid }
DyeAllocations { DyeAllocationid, PaintColorid, Percent, DyeId }
Dyes { DyeId, Name }
店舗、ShoppingDays、とトランザクションテーブルは単純明快であり、コメントは必要ありません。私たちは、Entity Frameworkのを介してアクセスし6つのテーブルを持っています。しかし、各取引では単一の色の塗料が購入されます。塗料の各色は、100%になる色の染料の割合の混合物で構成されています。
私は各店舗で毎日各染料に費やされたすべてのドルを合計したいと思います。ファインペイント(40%レッド、40%ブルー、20%ブラック)とピンクペイント(20%レッド、80%ホワイト)の20ドルの購入のための30ドルの1つの取引を想像してみてください。結果は
Store1,1、レッド、$ 16
Store1,1、ブルー、$ 12
Store1,1、ブラック、$ 6
Store1,1、ホワイト、$ 16
のような任意の助けを見てしまうだろう最も高く評価されます。私はどこから始めたらいいのか分からない。私はすべてのテーブルを内部結合し、データをエクセルピボットテーブルに入れてデータを抽出しました。明らかにそれは正しくありません。
私は以下から始めました。各取引ごとに各染料の購入を示す表を提供します。それぞれの店舗や買い物日の購入額を合計したいと思いますが、どうすればよいか分かりません。
var dyeValues = (from store in db.stores
join sd in db.shoppingdays on store.storeId equals sd.storeId
join tr in db.transactions on sd.shoppingdayId equals tr.shoppingdayId
join pc in db.paintcolors on tr.paintcolorId equals pc.paintcolorId
join da in db.dyeallocations on pc.paintcolorId equals da.paintcolorId
where da.percent > 0.0m
select new
{
store.Description,
shoppingdayDate = sd.Date,
da.dye.Name,
da.percent,
Allocation = da.percent * tr.Amount
});
「Paintid」はどこですか?これはどこに行くのですか?また、少なくとも、あなたが試したことを私たちに教えてください。 –
申し訳ありませんが、PaintIdはPaintColorIdだったはずです。正直なところ、すべてのテーブルをフラットに内部結合し、Excelでピボットテーブルを使用したいデータを抽出しました。それを超えて、私はdb.stores.selectmany(st => st.shoppingdays).selectmany(sd => sd.transactions)などから始めました...しかし、これは正しいアプローチではないことが分かりました。 私は染料や塗料ではじめて、逆に作業するべきでしょうか? – jlear
こんにちは@jlear、Stackoveflowは、私はこのデータを持っていると言うことができる場所ではない、私はそれからそれをしたい。あなたはあなたの側にいくつかの努力を示す必要があります。チェックしてください:http://stackoverflow.com/help/how-to-ask – bit