我遇到了SQL查询的问题,我需要一个消费者列表,他们已经购买了至少3种不同的产品,这些产品的供应商来自某个城市(让我们说纽约)。
Tabels列:
Tb_Consumer .......... Con_ID(PK),姓名,城市
Tb_Supplier ............. Supp_ID(PK),姓名,城市
Tb_Transactions ..... Tran_ID(PK),Supp_ID(FK),Con_ID(FK),PROD_ID(FK)
Tb_Products ............ Prod(ID(PK),姓名
到目前为止:
var query8Result = (from c in context.Tb_Consumer
join t in context.Tb_Transactions on c.Con_ID equals t.Con_ID
join s in context.Tb_Supplier on t.Supp_ID equals s.Supp_ID
join p in context.Tb_Product on t.Prod_ID equals p.Prod_ID
where s.City == "New York"
select new { Name = c.Name }).Distinct();
答案 0 :(得分:0)
我认为你需要一些Group-by的
var query8Result = (from c in context.Tb_Consumer
join t in context.Tb_Transactions on c.Con_ID equals t.Con_ID
join s in context.Tb_Supplier on t.Supp_ID equals s.Supp_ID
join p in context.Tb_Product on t.Prod_ID equals p.Prod_ID
where s.City == "New York"
group c by new { c.Name, t.Prod_ID } into customerProducts
group customerProducts by new { customerProducts.Key.Name } into customers
where customers.Count() > 3
select g.Key);
对不起,如果这不是100%正确 - 这有点难以测试......