Można połączyć tabele po osoba_id i sprawdzać obecność osoba_id dla studenta i dydaktyka
http://rextester.com/IDB23655
create table osoba(osoba_id int identity(1, 1), nazwisko varchar(50), imie varchar(50),
CONSTRAINT PK_osoba_id PRIMARY KEY NONCLUSTERED (osoba_id)
);
create table studenci(osoba_id int, nr_indeksu varchar(50), data_rekrutacji datetime,
CONSTRAINT FK_studenci_osoba_id FOREIGN KEY (osoba_id)
REFERENCES osoba(osoba_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
create table dydaktycy(osoba_id int, data_zatrudnienia datetime,
CONSTRAINT FK_dydaktycy_osoba_id FOREIGN KEY (osoba_id)
REFERENCES osoba(osoba_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
go
insert into osoba values ('Nazwisko1', 'Imie1'), ('Nazwisko2', 'Imie2'), ('Nazwisko3', 'Imie3'), ('Nazwisko4', 'Imie4'), ('Nazwisko5', 'Imie5');
go
insert into studenci values (1, '11111', '20170102 10:34:09 AM'), (3, '11112', '20170103 10:34:09 AM'), (5, '11113', '20170104 10:34:09 AM');
go
insert into dydaktycy values (2, '20160102 10:34:09 AM'), (4, '20160103 10:34:09 AM');
select
CASE
WHEN s.osoba_id IS not NULL THEN concat('Student', ' ', imie, ' ', nazwisko)
WHEN d.osoba_id IS not NULL THEN concat('Dydaktyk', ' ', imie, ' ', nazwisko)
END as osoby
--,*
from osoba o left join studenci s on o.osoba_id = s.osoba_id left join dydaktycy d on o.osoba_id = d.osoba_id;