gpt4 book ai didi

php - 嵌套查询和计算都在同一个查询中 - 这可能吗?

转载 作者:行者123 更新时间:2023-11-29 13:09:35 24 4
gpt4 key购买 nike

我正在运行 MySQL 查询来获取所有具有当前订单的“用户”。(用户在数据库/查询中可能有超过 1 个关联订单)。

但是,我还想获取每个用户的总订单值(value)以及返回的每个用户的总订单数(在下面的查询中)。

我可以在 PHP 中完成这些计算,但我觉得这是可能的,并且在同一个 SQL 查询中完成这些计算会更整洁(如果可能的话)。

这是基本查询,没有尝试进行上述计算

SELECT u.UserID, u.UserName,
o.OrdersID, o.OrderProductName, o.OrderProductQT, o.OrderTotalPrice, o.tUsers_UserID, o.tOrderStatus_StatusID, o.OrderDate, o.OrderDateModified, o.OrderVoid, o.tProducts_ProductID,
os.OrderStatusName,
ud.UserDetailsName, ud.UserDetailsPostCode,
p.ProductName, p.ProductImage1
FROM tusers u
INNER JOIN torders o ON o.tUsers_UserID = u.UserID
INNER JOIN torderstatus os ON os.OrderStatus_StatusID = o.tOrderStatus_StatusID
INNER JOIN tuserdetails ud ON ud.tUsers_UserID = u.UserID
LEFT JOIN tproducts p ON p.ProductID = o.tProducts_ProductID
WHERE o.tOrderStatus_StatusID = ?
GROUP BY u.UserID
ORDER BY OrdersID DESC

我尝试了各种嵌套选择查询,但没有一个有效(右)

我想要在 SQL 中做的事情是可能的吗,还是应该在获得返回的查询结果后在 PHP 中完成这一切?

非常感谢任何建议

最佳答案

您可以将稍加修改的查询嵌入到另一个查询中。例如:

SELECT userid, SUM(orderid) FROM orders GROUP BY userid

SELECT userid, SUM(distinct productid)
FROM
orders o
INNER JOIN orderlines ol on ol.orderid = o.orderid
GROUP BY
userid

可以组合为:

SELECT
u.userid
u.fullname,

(SELECT SUM(orderid)
FROM orders o
WHERE o.userid = u.userid) as ORDERCOUNT,

(SELECT SUM(distinct productid)
FROM
orders o
INNER JOIN orderlines ol on ol.orderid = o.orderid
WHERE
o.userid = u.userid) as UNIQUEPRODUCTS
FROM
users u

请注意,后一个查询将返回所有用户,并将返回 NULL对于 ORDERCOUNT 或 UNIQUEPRODUCTS,当子查询不返回任何内容时(当用户没有订单时)。此外,当子查询返回多于 1 行时,查询将失败,这在我发布的示例中永远不会发生。

关于php - 嵌套查询和计算都在同一个查询中 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com