连接两个表并使用 where 子句过滤它们

2024-04-13

我在获取所需的 SQL 输出时遇到问题。

我有两个这样的表:

tblOrder

ID    User    Status
1      1         0
2      1         0
3      2         1

表订单项

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 的所有订单,还可以查看订单中的所有项目,如下所示:

Output

 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 查询才能得到我想要的结果?

接下来,我想使用 PHP 以 JSON 格式打印输出,以便在另一台设备上运行的 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# 代码中重新组织结果,并将其插入到那里的类中。


喜欢代码的编码员提及 https://stackoverflow.com/questions/29256560/sql-get-all-rows-from-first-table-with-specific-valu-and-add-all-related-rows-fr#comment46716410_29256560你应该JOIN两者同表,适用O.Status = 0使用WHERE子句,然后使用ORDER BY使用所需的方式对结果进行排序ASC or DESC基于升序或降序,如下所示。最好搭配因为它具有搜索、排序和操作列表的方法。

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接两个表并使用 where 子句过滤它们 的相关文章

随机推荐