Получение следующей ошибки: ORA-01422: точная выборка возвращает больше запрошенного количества строк ORA-6512
Новичок в PL/SQL, и хотя я ЗНАЮ, что этот запрос должен выполняться через стандартный SQL, я пытаюсь понять, как это сделать с помощью PL/SQL.
Мне нужен запрос, чтобы вернуть общее количество ПРОДАЖ для клиентов с почтовым индексом "20636"
Вот таблицы/ввод:
CREATE TABLE CUSTOMERS
(customerID INT PRIMARY KEY,
customerZip VARCHAR(15) NOT NULL);
CREATE TABLE SALES
(saleID INT PRIMARY KEY,
customerID INT,
CONSTRAINT SALES_FK1 FOREIGN KEY (customerID) REFERENCES CUSTOMERS(customerID));
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (1, '20636');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (2, '20619');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (3, '20650');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (4, '20670');
INSERT INTO CUSTOMERS (customerID, customerZIP) VALUES (5, '20636');
INSERT INTO SALES (saleID, customerID) VALUES (1, 1);
INSERT INTO SALES (saleID, customerID) VALUES (2, 2);
INSERT INTO SALES (saleID, customerID) VALUES (3, 3);
INSERT INTO SALES (saleID, customerID) VALUES (4, 4);
INSERT INTO SALES (saleID, customerID) VALUES (5, 5);
Вот код, который я написал для анонимного блока PL/SQL:
DECLARE
customerZip INTEGER;
totalSales INTEGER;
BEGIN
SELECT customerID INTO customerZip from CUSTOMERS where customerZip = '20636';
SELECT COUNT(*) INTO totalSales from SALES where customerID = customerZip;
DBMS_OUTPUT.put_line('We sold ' || totalSales || ' Cars to customers in Zip Code ' || customerZip ||'.');
END;
/
Если я запускаю это без двух атрибутов customerZIP, установленных на «20636», все работает нормально. Как только я ввожу более одной записи клиента с почтовым индексом «20636», я получаю сообщение об ошибке.
Не могли бы вы объяснить, что я делаю неправильно здесь и как я могу это исправить? Благодарю вас!
Ссылка на SQL Fiddle, если это поможет: http://sqlfiddle.com/#!4/10fc1