我有 3 张桌子。
- 用户(字段:用户 ID 和名称)
- MonthsMap(字段:UserId、Month、orderId)
- OrderTable(字段:OrderId、订单数量等)
我的要求是这样的:
如果用户有 11 月份的订单,则显示 11 月份的订单,否则显示 10 月份的订单。
目前我正在做的是
foreach(user)
{
join User table with MonthsMap table where month = november
if( result is null )
{
join User table with MonthsMap table where month = october join order table to get October order details
}
else
{
join User table with MonthsMap table where month = november join order table to get november order details
}
}
用于迭代每个用户的 for 循环需要花费大量时间。我正在使用 Linq to SQL,有没有更好的 Linq 选项可以用来获取所有用户;在单个查询中的订单。
感谢您的所有回答,但很抱歉我的例子让您有点困惑。确切的场景是这样的,用户可以有不同类型的订单(例如:普通订单和紧急订单)。所以现在我将使用订单映射表而不是months_map表(字段用户ID,order_type(“正常/紧急/非常紧急”),order_id)
所以我的应用程序必须在用户表中列出所有用户的订单。
列表应该是这样的
- 如果用户有非常紧急的订单,应用程序只需要显示他非常紧急的订单
- 否则,如果用户有紧急订单,应用程序只需要显示他的紧急订单
- 否则,如果用户有正常订单,应用程序只需要显示他的正常订单
- 否则只显示用户名,订单详细信息留空。