我正在尝试执行一条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