【问题标题】:List the customername and total quantity of products ordered for customers who have ordered less than 500 products across all their orders [closed]列出在所有订单中订购的产品少于 500 件的客户的客户名称和订购的产品总量 [关闭]
【发布时间】:2020-02-25 19:36:32
【问题描述】:

我加入了三个表,因为客户和订单详细信息表中没有共同记录。我没有得到结果,我做错了什么?

orders table, customerstable, orderstable 这是我的代码 选择不同的 c.customername, sum(d.quantityOrdered) 作为 totalquantity 从订单o left join customers c on o.orderNumber = c.customerNumber left join orderdetails d on o.ordernumber = d.ordernumber 按 c.customerNumber 分组

我运行查询时的结果:

【问题讨论】:

  • 人们要求查看一些示例数据、预期结果和实际结果(作为格式化文本而不是图像)。
  • @pes 请这样做。尽管文字比图片好很多,但两者都可以
  • use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或扩充文本的内容。在图像中包含图例/关键和说明。
  • 请在代码问题中提供minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出(包括逐字错误消息)的示例输入(作为初始化代码);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL 的 SQL,其中包括约束、索引和表格初始化。 How to Ask

标签: mysql sql left-join


【解决方案1】:

你需要改变你的条件:

on o.ordernumber = o.ordernumber

到这里:

on o.ordernumber = d.ordernumber

你还需要改变这个:

o.orderNumber = c.customerNumber

对此:

o.customerNumber = c.customerNumber

还有一件事:您应该将餐桌订单加入餐桌客户,而不是其他方式。这意味着您需要从customers 中进行选择,然后离开连接表orders,然后在orders 上离开连接orderdetails

select distinct c.customername, sum(d.quantityOrdered) as totalquantity
from customers c 
left join orders o on c.customerNumber = o.customerNumber
left join orderdetails d on o.ordernumber = d.ordernumber
group by c.customerNumber
having sum(d.quantityOrdered)<=500

谢谢埃里克!

除此之外,请检查您的客户加入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2015-05-12
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多