So for my assignment I have to get the one (given there's one) professor that supervises all the projects in the summer semester 2020. My Idea was to just count the amount of supervising professors. If it's "1" then that professors name gets selected, but if there's 2 or more professors then no one gets selected. But when I test my code, I get 2 different Professors with each having their count on "1"...
Code looks like this
SELECT DISTINCT Nachname, Vorname, COUNT (DISTINCT proj.prof_persID) AS Professoren
FROM Personal pers
JOIN Projekte proj
ON pers.persID = proj.prof_persID
WHERE proj.Semester = 'SS2020'
GROUP BY Nachname, Vorname
HAVING COUNT (proj.prof_persID) = 1;
Pointing me in the right direction surely suffices, thx!
EDIT
Example for the Tables themselves
CREATE TABLE Personal (
PersID INTEGER GENERATED ALWAYS AS IDENTITY
CONSTRAINT PersPK PRIMARY KEY,
Nachname VARCHAR2(30) NOT NULL ,
Vorname VARCHAR2(30) NOT NULL ,
Telefonnr VARCHAR2(15) NULL ,
Email VARCHAR2(50) NOT NULL
CONSTRAINT pEmailSyntax CHECK (email LIKE '%@%.__'
OR email LIKE '%@$.___')
INITIALLY DEFERRED,
Raum VARCHAR2(5) NULL ,
Typ CHAR(1) NOT NULL
CONSTRAINT PersTypChk CHECK ( UPPER(typ) IN
('W','P','S','V') ) INITIALLY IMMEDIATE,
von DATE,
bis DATE);
CREATE TABLE Projekte (
ProjID INTEGER NOT NULL ,
Bezeichnung VARCHAR2(30) NOT NULL ,
Semester VARCHAR2(10) NOT NULL ,
maxGGroesse INTEGER NULL ,
Fach VARCHAR2(20) NULL ,
WMA_PersID INTEGER NULL ,
Prof_PersID INTEGER NULL ,
Freigeschaltet DATE NULL ,
CONSTRAINT PKProjekte PRIMARY KEY (ProjID),
CONSTRAINT freischaltenCck CHECK ( (freigeschaltet IS NOT NULL
AND Fach IS NOT NULL AND Prof_persID IS NOT NULL)
OR freigeschaltet IS NULL ) INITIALLY DEFERRED );
//SAMPLE DATA FOR "PERSONAL"
INSERT INTO Personal (Nachname, Vorname, Telefonnr, Email, Raum, Typ, von, bis)
VALUES ('Bauer', 'Erna', '02261 81961211', 'EB@thk.de', '2230', 'P', TO_DATE('01.03.2019', 'DD.MM.RRRR'), NULL);
INSERT INTO Personal (Nachname, Vorname, Telefonnr, Email, Raum, Typ, von, bis)
VALUES ('Mecker', 'Else', '02261 81964222', 'EM@thk.de', '2254', 'P', TO_DATE('16.06.2020', 'DD.MM.RRRR'), TO_DATE('20.02.2022', 'DD.MM.RRRR'));
//SAMPLE DATA FOR "PROJECTS"
INSERT INTO Projekte
VALUES (proj_seq.NEXTVAL, 'Oracle-Praktikumsprojekt', 'SS2020', 2, 'DBS1', NULL, 2, TO_DATE ('15.04.2020', 'DD.MM.RRRR'));
INSERT INTO Projekte
VALUES (proj_seq.NEXTVAL, 'Build-A-Bear Workshop', 'SS2020', 2, 'DBS1', NULL, 3, TO_DATE ('15.04.2020', 'DD.MM.RRRR'));
As for the two example samples for my projects, I expected my program to select none, since there's multiple professors overseeing atleast one of the projects in 'SS2020', but it selects both given professors with each having a count of 1.