PL/SQLカーソルを使用してロードする予定のSQL文を実行しようとしています。 1つ以上のプロジェクトで作業している場合、従業員の名前と作業しているプロジェクトを取得します。何らかの理由で、「count(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));
EDIT
は、私が代わりにこの作業を行うために管理:
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
私の心から謝罪します。私はこれを編集してテーブルを入れました。また、これは後でPL/SQLカーソルに組み込まれる通常の古いSQL文です。質問を書くときの私の総監督 – Gary
私は間違いを反映するためにこれを絶対に編集することができます。私はこれを行う場合、あなたのdownvoteを削除できますか?もちろん、あなたはそれをやる人でした。 – Gary