我正在嘗試執行一條SQL語句,我正在計劃使用PL/SQL光標。如果他們正在處理多個項目,它將獲取員工姓名和他們正在處理的項目。出於某種原因,「有數(pno)> 1」的規定在這裏不起作用。它只是說「找不到數據」用於PL/SQL語句的SQL查詢將不起作用
有什麼我做錯了嗎?我在查詢下面包含了我的DB代碼。
查詢:
select pname, fname
from project, works_on, employee
where pno=pnumber and essn=ssn
group by pname, fname
having count(pno)>1;
Works_on表:
create table works_on (
Essn char(9) not null,
Pno int not null,
hours decimal(3,1),
primary key(essn, pno),
foreign key(Essn) references employee,
foreign key(pno) references project);
項目表:
create table project (
Pname varchar2(15) not null,
Pnumber int not null,
Plocation varchar2(15),
Dnum int not null,
primary key (Pnumber),
unique (Pname),
foreign key(Dnum) references department(Dnumber));
Employee表:
create table employee (
Fname varchar2(15) not null,
Minit char(1),
Lname varchar2(15) not null,
Ssn char(9),
Bdate date,
Address varchar2(30),
Sex char(1),
Salary decimal(10,2),
super_ssn char(9),
dno int,
primary key (Ssn),
foreign key (dno) references department(Dnumber));
編輯
我設法使這項工作,而不是:
select fname, pname
from employee, works_on, project
where essn=ssn and pno=pnumber
group by fname, pname
having count(pnumber) > 1
什麼代替PNO製成pnumber工作?
有沒有在你的代碼中的光標也不PL/SQL - 這完全是SQL。 「有什麼不對的嗎?」我們怎麼可能說?也許你的數據在'pno'列上是唯一的 - 在這種情況下返回零行對於'HAVING COUNT(pno)> 1'過濾器是正確的。 – MT0
我真誠的道歉。我編輯了這個以包含我的表格。此外,這是一個普通的舊SQL語句,稍後將包含在PL/SQL遊標中。在寫這個問題時總是疏忽我 – Gary
我可以絕對編輯這個來反映我的錯誤。如果我這樣做,你可以刪除你的downvote嗎?如果你當然是做這件事的人。 – Gary