我在获取所需的SQL输出时遇到问题。
我有两张这样的表:
tblOrder
ID User Status
1 1 0
2 1 0
3 2 1
tblOrderItem
ID OrderID Product Quantity
1 1 A 2
2 1 B 1
3 2 A 3
4 2 B 1
5 2 C 1
6 3 A 2
我想获得一个输出表,我可以在其中查看状态为0的所有订单,并查看订单中的所有商品,如下所示:
输出
OrderID User Product Quantity
1 1 A 2
1 1 B 1
2 1 A 3
2 1 B 1
2 1 C 1
我尝试使用不同版本的INNER JOIN等的所有SQL只获得每个OrderID(tblOrder.ID
)的第一行。我应该如何编写SQL查询以获得我想要的结果?
接下来,我想用JSON格式的PHP打印输出,以便在另一台设备上运行C#程序以获得结果。最后,结果应该插入到类中:
Public class orderobject
{
public int OrderID { get; set; }
public int UserID { get; set; }
public String Product[] { get; set; } // Dont know if correct way to make array this way
public int Quantity[] { get; set; }
}
结果将最终插入到包含此类对象的列表中。因此,列表中的每个条目都是一个包含所有所需订单数据的单独订单。
我是否认为错误或者我希望我的SQL最好只获得一个网络请求?我可以在C#代码中重新组织结果,将其插入到那里的类中。
答案 0 :(得分:0)
与代码编码器mentioned一样,您应JOIN
使用O.Status = 0
子句应用WHERE
,然后使用ORDER BY
对结果进行排序基于升序或降序使用ASC
或DESC
所需的方式,如下所示。最好使用List<string>
,因为它有搜索,排序和操作列表的方法。
SELECT OI.OrderID, O.User, OI.Product, OI.Quantity
FROM tblOrder O
INNER JOIN tblOrderItem OI ON O.ID = OI.OrderID
WHERE O.Status = 0
ORDER BY OI.OrderID ASC, OI.Product ASC
答案 1 :(得分:0)
我发现我做的主要问题是写O.ID = OI.ID
而不是O.ID = OI.OrderID
。这就是为什么我每个ID只有一行。
我应该看到,但我只想到其他问题。谢谢您的帮助!