【问题标题】:COUNT query issuesCOUNT 个查询问题
【发布时间】:2015-04-03 00:54:29
【问题描述】:

我正在尝试在 Oracle 中编写一个查询,该查询将统计没有任何订单的客户数量。

这是我一直在使用的代码:

SELECT
    COUNT(customer_num)
FROM 
    orders 
INNER JOIN 
    customer ON orders.order_num = customer.customer_num,
WHERE 
    order.order_num IS NULL;

这是错误信息:

ORA-00903: 无效的表名

显然这是行不通的。请帮忙!

【问题讨论】:

  • where 子句前有一个逗号。另外我认为您可能需要外部连接。
  • 本题查询部分应为代码格式
  • 您也有 order.order_num 以及 FROM 订单,您必须直接获取表名。这会导致错误。但是您还必须按照 T I 固定逗号
  • @Michael,另外,添加到 T I 的响应中,如果您有内部联接,则查询正在寻找将客户编号主键连接到订单号外键(连接到 cust 表)。如果客户没有任何订单,他们将不会出现在订单表中,除非您的数据库出现问题。获得正确的外连接(或右连接),您可以执行 where NULL 条件。
  • @Michael,一条忠告,搜索一张 sql join 的图片,打印出来,学习的时候放在身边。

标签: sql database oracle count


【解决方案1】:
Select COUNT(customer_num) 
FROM orders 
right JOIN customer 
ON orders.order_num = customer.customer_num
where orders.order_num is NULL;

此外,您的客户是单数,而您的订单是复数,这可能会使您在编写查询时感到困惑。

【讨论】:

    【解决方案2】:
    Select COUNT(customer_num) 
    FROM customer LEFT JOIN orders ON customer.customer_num = orders.order_num  
    WHERE orders.order_num is NULL;
    

    里面有一个不应该存在的昏迷,WHERE orders.order_num 缺少一个“s”。此外,您有 1 个复数形式的表,而另一个则没有。也许是它的表customers 而不是customer?

    我认为 LEFT JOIN 也更适合您想要实现的目标

    编辑:看看这个SQL statement to get all customers with no orders

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      相关资源
      最近更新 更多