我在获取所需的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查询以获得我想要的结果?
tblOrder.ID
接下来,我想用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最好的方式来只获取一个Web请求?我可以在C#代码ant中将结果重组到那里的类中。
就像提到的Code Code of Code一样,您应同时JOIN在表格中O.Status = 0使用WHERE子句应用表格,然后使用或基于升序或降序按ORDER BY要求的方式对结果进行排序,如下所示。最好使用它,因为它具有搜索,排序和操作列表的方法。ASC``DESC``List<string>
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