当前位置: 首页 > 知识库问答 >
问题:

和项目在一个连接语句MySQL

傅鸿波
2023-03-14

我有三个表,一个用于用户的表,一个用于订单,最后一个包含订单项。

我创建了一个SQL查询,用于获取所有订单并将用户加入结果,现在我想将订单项加入查询。一个订单可以有多个订单项。每个订单项目都有一个价格。我需要与订单项目对应的所有订单项目的总和。

所以我会得到一个结果,看起来像这样:id,order_id, userid,order_time, id, name, email, price

现在,我的查询如下所示:

SELECT huxwz_user_orders.*, huxwz_users.name, huxwz_users.email, huxwz_users.id, SUM(huxwz_user_orderitems.price)
FROM huxwz_user_orders
LEFT OUTER JOIN huxwz_users ON (
    huxwz_user_orders.userid = huxwz_users.id
)
LEFT OUTER JOIN huxwz_user_orderitems ON (
    huxwz_user_orders.id = huxwz_user_orderitems.orderid
)

问题是,SUM正在做所有订单项的总和,这意味着我只得到一个结果:/

你知道我该怎么解决这个问题吗?

共有3个答案

易书
2023-03-14
SELECT huxwz_user_orders.*, huxwz_users.name, huxwz_users.email, huxwz_users.id, SUM(huxwz_user_orderitems.price)
FROM huxwz_user_orders
LEFT OUTER JOIN huxwz_users ON (
    huxwz_user_orders.userid = huxwz_users.id
)
LEFT OUTER JOIN huxwz_user_orderitems ON (
    huxwz_user_orders.id = huxwz_user_orderitems.orderid
)GROUP BY
huxwz_users.name, huxwz_users.email, huxwz_users.id
金兴朝
2023-03-14

您必须从select中删除星号,然后按如下方式放置分组:

SELECT huxwz_user_orders.field1, huxwz_users.name, huxwz_users.email, huxwz_users.id, 
SUM(huxwz_user_orderitems.price)
FROM huxwz_user_orders
LEFT OUTER JOIN huxwz_users ON (
    huxwz_user_orders.userid = huxwz_users.id
)
LEFT OUTER JOIN huxwz_user_orderitems ON (
    huxwz_user_orders.id = huxwz_user_orderitems.orderid
)
GROUP BY huxwz_user_orders.field1, huxwz_users.name, huxwz_users.email, huxwz_users.id

或者,您可以更轻松地使用嵌套查询:

SELECT huxwz_user_orders.field1, huxwz_users.name, huxwz_users.email, huxwz_users.id, 
(SELECT SUM(price) FROM huxwz_user_orderitems WHERE huxwz_user_orders.id = orderid) AS  price
FROM huxwz_user_orders
LEFT OUTER JOIN huxwz_users ON (
    huxwz_user_orders.userid = huxwz_users.id
)
东郭鹤龄
2023-03-14
SELECT huxwz_user_orders.*, huxwz_users.name, huxwz_users.email, huxwz_users.id, SUM(huxwz_user_orderitems.price)
FROM huxwz_user_orders
LEFT OUTER JOIN huxwz_users ON (
    huxwz_user_orders.userid = huxwz_users.id
)
LEFT OUTER JOIN huxwz_user_orderitems ON (
    huxwz_user_orders.id = huxwz_user_orderitems.orderid
)
Group BY huxwz_user_orderitems.orderid
ORDER BY huxwz_user_orders.id

我这样做了,它似乎完全符合我的要求,感谢您提供的分组信息,它很有效!:3.

 类似资料:
  • 我有以下表格: http://www.gulllakeschools.net/mysqltables.pdf 我需要以以下格式提取数据:学生姓、学生名、日期事件、日期事件(学生登录的每一天都有一个日期事件) 组件com_users是我需要从组件列中提取的组件。 我是mysql的菜鸟,不知道如何一次完成。我有这些单独运行良好的精选语句: 但我不能为我的生活让他们加入。我尝试过加入,加入,完全加入,合

  • 问题内容: 我想知道每个连接可以同时打开多少个语句或preparedstatement。我真的不明白,如果执行多个语句并检索到多个结果集,它将如何工作。具有详细信息的资源链接将很有帮助。 谢谢 问题答案: 可以在同一连接上创建和使用多个语句,但是一次只能在一个语句上创建和使用 一个 结果集。如果您通过同一条语句创建/打开另一个,则任何先前打开的结果集将被隐式关闭,从而导致任何尝试访问它的“ Res

  • 我最近转到了一个项目,在这个项目中我遇到了很多这种性质的代码--(这是使用jdbc postgres驱动程序) 显然,这段代码已经在生产中运行了一段时间,没有引起问题。 为了进一步澄清,如果我的理解是正确的(即,statement和resultset必须在连接关闭之前而不是之后关闭),我需要在catch和finally之间重复一些代码。修订后的代码如下所示。这可以简化吗? 只是为了透视,这段代码是

  • 问题内容: 当我的SQL语句中只有一个内部联接时,它可以很好地工作。我尝试加入第二张表,现在出现一个错误,提示存在语法错误(缺少运算符)。这是怎么了 问题答案: 对于多表联接,您必须将多余的联接嵌套在方括号中: 基本上,对于除第一个表之外的所有其他表,都需要在原始“ FROM”表之前加上一个括号,并在匹配的JOIN“ on”子句上使用一个结束括号。

  • 我需要将priorityId设置为以下。有人能建议一个sql更新语句吗?我想我需要一个由Rid和Gid组成的组或自加入 非常感谢。

  • 我正在尝试更新一个名为< code>incode_warrants的表,并将< code>warn_docket_no设置为< code>incode_violations表中的< code>viol_docket_no。 我在Postgres 9.3中有以下SQL查询,但当它触发时,我得到以下错误: 我更像是一个主动记录的人,所以我的原始SQL技能严重不足。我想知道是否有人可以帮助我指出正确的方