【问题标题】:Joining two tables keeps returning invalid number ORA-01722加入两个表不断返回无效数字 ORA-01722
【发布时间】:2018-08-12 17:09:40
【问题描述】:

我正在尝试返回包含已下订单数量的客户名称列表。我已经尝试了多种不同的方法,但是在“数量”和“名字”所在的两个表之间没有共同的列。

当尝试仅从“CUSTOMER”和“ORDERDETAIL”表中提取时,它返回 ORA-01722“Invalid Number”。我会指出,我对此很陌生,也很落后于我应该学习的地方。下面是表格。

CREATE TABLE customer (
customerID NUMBER PRIMARY KEY,
firstName VARCHAR2 (30) NOT NULL,
lastName VARCHAR2 (30) NOT NULL,
address VARCHAR2 (60),
city VARCHAR2 (30),
state VARCHAR2(20),
zipCode CHAR (5),
country VARCHAR2 (50),
phone CHAR (10),
email VARCHAR2 (30) NOT NULL UNIQUE,
username VARCHAR2 (20) NOT NULL UNIQUE,
password VARCHAR2 (20) NOT NULL
);

CREATE TABLE orderInfo (
orderID NUMBER PRIMARY KEY,
customerID NUMBER REFERENCES customer (customerID),
orderDate DATE,
shipDate DATE
orderDetailID NUMBER REFERENCES orderDetail (orderDetailID)
);

CREATE TABLE orderDetail (
orderDetailID NUMBER PRIMARY KEY,
orderID NUMBER REFERENCES orderInfo (orderID),
productID VARCHAR2 (10) REFERENCES product (productID),
price NUMBER (7,2),
quantity NUMBER CHECK (quantity > 0)
);

CREATE TABLE product (
productID VARCHAR2 (10) PRIMARY KEY,
categoryID VARCHAR2 (10) REFERENCES categoryInfo (categoryID),
productName VARCHAR2 (40),
productDescription VARCHAR2 (100),
unitPrice NUMBER,
picture BLOB
);

CREATE TABLE categoryInfo (
categoryID VARCHAR2 (10) PRIMARY KEY,
categoryName VARCHAR (50),
description VARCHAR2 (100)
);

【问题讨论】:

  • 您好像忘记发布查询了。请编辑您的问题并将其包含在内。

标签: sql oracle


【解决方案1】:

当尝试仅从“CUSTOMER”和“ORDERDETAIL”表中提取时,它返回 ORA-01722“Invalid Number”。

这取决于你如何编写连接。虽然,正如您在帖子中所说,它们没有共同的列,所以任何连接都是错误的。

我正在尝试返回包含已下订单数量的客户名称列表。

您实际上需要回答此任务的只是客户名称和每个客户的订单数。这意味着计算 ORDERINFO 记录的数量。像这样:

select c.customerID ,
       c.firstName,
       c.lastName,
       count(o.orderid) no_of_orders
from orderinfo o
     join customer c
     on c.customerID = o.customerID  
group by c.customerID ,
       c.firstName,
       c.lastName
/

【讨论】:

  • 我猜,我读了一些关于这个的内容。我试图将“customer”表与“orderDetail”表连接起来,因为“quantity”列在该表中——这与订单数量无关。这就是为什么我不顾一切地试图加入 3 张桌子,其中一张没有公共列。这很好用,谢谢。
猜你喜欢
  • 2019-04-26
  • 1970-01-01
  • 2014-06-03
  • 2017-05-04
  • 2021-10-30
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多