SELECT * FROM Firmen
WHERE FirmaID IN (SELECT FirmaID FROM Lieferanten
UNION
SELECT n.FirmaID FROM Niederlassungen n, Lieferanten l
WHERE l.NlNummer = n.NlNummer
);
Annahme dabei ist, daß die Tabellen so definiert sind:
CREATE TABLE Firmen (
FirmaID int not null primary key,
FirmenName varchar(80) not null unique
);
CREATE TABLE Niederlassungen (
NlNummer int not null primary key,
FirmaID int not null references Firmen(FirmaID),
PLZ varchar(20),
Ort varchar(120) not null,
);
CREATE TABLE Lieferanten (
Artikel varchar(80) not null,
FirmaID int references Firmen(FirmaID),
NlNummer int references Niederlassungen(NlNummer),
contraint "Lieferant fehlt" check(Coalesce(FirmaID,NlNummer) IS NOT NULL)
);