Hallo, ich habe eine Tabelle Personal (Schema und Daten sind unten) ich versuche rauszubekommen welche Angestellten im selben Jahrgang geboren sind und das gleiche Gehalt wie in der Mitarbeiter in PNR 829 beziehen. Ich habe viele Abfragen durchprobiert ohne erfolg.. meine letzte Abfrage war diese :
select name
from pers p
where exists (select*
from pers c
where p.jahrg = c.jahrg and c.gehalt = 54000 );
Was nicht klappt, weil ständig dasselbe Jahrgang derselben Person verglichen wird und somit nur Schmidt als Ergebnis rauskommt, was zur abfrage passt aber nicht zu dem was ich wirklich möchte. Kann mir jemand sagen wo mein Denkfehler liegt ? Ich weiss nicht wie ich von derselben Tabelle Daten miteinander vergleichen soll. Danke im Voraus!
und die daten:
select name
from pers p
where exists (select*
from pers c
where p.jahrg = c.jahrg and c.gehalt = 54000 );
Was nicht klappt, weil ständig dasselbe Jahrgang derselben Person verglichen wird und somit nur Schmidt als Ergebnis rauskommt, was zur abfrage passt aber nicht zu dem was ich wirklich möchte. Kann mir jemand sagen wo mein Denkfehler liegt ? Ich weiss nicht wie ich von derselben Tabelle Daten miteinander vergleichen soll. Danke im Voraus!
SQL:
CREATE TABLE abt (
anr char(3) PRIMARY KEY,
aname varchar2(20) not null,
ort varchar2(20) not null);
CREATE TABLE pers (
pnr integer PRIMARY KEY,
name varchar2(20) not null,
jahrg integer,
eindatum date,
gehalt integer not null,
beruf varchar2(20) not null,
anr char(3) not null CONSTRAINT pers_abt_fk REFERENCES abt(anr),
vnr integer CONSTRAINT pers_pers_fk REFERENCES pers(pnr));
und die daten:
SQL:
INSERT INTO abt (anr, aname, ort) VALUES ('K51', 'Entwicklung', 'Erlangen');
INSERT INTO abt (anr, aname, ort) VALUES ('K53', 'Buchhaltung', 'Nuernberg');
INSERT INTO abt (anr, aname, ort) VALUES ('K55', 'Personal', 'Nuernberg');
INSERT INTO pers (pnr, name, jahrg, eindatum, gehalt, beruf, anr, vnr) VALUES (123, 'Mueller', 1958, '01-09-1980', 48000, 'Programmierer', 'K51', NULL );
INSERT INTO pers (pnr, name, jahrg, eindatum, gehalt, beruf, anr, vnr) VALUES (406, 'Coy', 1950, '10-03-1986', 60000, 'Kaufmann', 'K55', 123);
INSERT INTO pers (pnr, name, jahrg, eindatum, gehalt, beruf, anr, vnr) VALUES (829, 'Schmidt', 1960, '01-06-1990', 54000, 'Kaufmann', 'K53', 123);
INSERT INTO pers (pnr, name, jahrg, eindatum, gehalt, beruf, anr, vnr) VALUES (874, 'Abel', NULL, '01-05-1994', 42000, 'Software Entwickler', 'K55', 829);
INSERT INTO pers (pnr, name, jahrg, eindatum, gehalt, beruf, anr, vnr) VALUES (503, 'Junghans', 1950, NULL, 33000, 'Programmierer', 'K51', 123);