5.7.3 Verzamelingsoperatoren (Union, Difference, Intersect) Flashcards
Geef een lijst van de medewerkersnamen en de afdelingsnamen.
SELECT m.naam
FROM medewerkers m
UNION
SELECT a.naam
FROM afdelingen a;
Geef een lijst met namen van afdelingen en namen van cursussen die respectievelijk in Hasselt gevestigd zijn of daar doorgaan.
SELECT a.naam
FROM afdelingen a
WHERE a.locatie = ‘HASSELT’
UNION
SELECT c.omschrijving
FROM uitvoeringen u
JOIN cursussen c
ON u.cursus = c.code
WHERE u.locatie = ‘HASSELT’;
Geef de medewerkers die geen manager zijn.
select mnr, naam, functie
from medewerkers
where functie != ‘MANAGER’;
select mnr, naam, functie
from medewerkers
minus
select mnr, naam, functie
from medewerkers
where functie = ‘MANAGER’;
Geef de locaties waar wel cursussen doorgaan maar waar geen afdelingen gevestigd zijn.
SELECT u.locatie
FROM uitvoeringen u
MINUS
SELECT a.locatie
FROM afdelingen a;
Geef de naam en begindatum van elke cursus die alleen door de medewerker 7844 gevolgd is.
select cursus, begindatum
from inschrijvingen
where cursist = 7844;
select cursus, begindatum
from inschrijvingen
intersect
select cursus, begindatum
from inschrijvingen
where cursist = 7844;
select cursus, begindatum
from inschrijvingen
minus
select cursus, begindatum
from inschrijvingen
where cursist != 7844;
select distinct c.omschrijving, i.begindatum
from inschrijvingen i
join uitvoeringen u
on i.cursus = u.cursus
join cursussen c
on u.cursus = c.code
where i.cursist = 7844;
Geef de cursuscode van de cursussen die E. Jacobs niet gevolg heeft.
1ste query:
select code
from cursussen;
2de query:
select i.cursus, m.naam, m.voorn
from inschrijvingen i
join medewerkers m
on i.cursist = m.mnr
where m.naam = ‘JACOBS’ and m.voorn like ‘E%’;
select code
from cursussen
minus
select i.cursus
from inschrijvingen i
join medewerkers m
on i.cursist = m.mnr
where m.naam = ‘JACOBS’ and m.voorn like ‘E%’;
SELECT i.cursus
FROM inschrijvingen i
MINUS
SELECT i.cursus
FROM inschrijvingen i
JOIN medewerkers m
ON i.cursist = m.mnr
WHERE m.naam = ‘JACOBS’ AND m.voorn LIKE ‘E%’;
Geef de namen van de medewerkers die geen cursussen gevolgd hebben.
SELECT m.naam
FROM medewerkers m
MINUS
SELECT DISTINCT m.naam
FROM medewerkers m
JOIN inschrijvingen i
ON m.mnr = i.cursist;
In welke plaatsen is minstens één afdeling gevestigd en wordt minstens één cursus gepland.
SELECT a.locatie
FROM afdelingen a
INTERSECT
SELECT u.locatie
FROM uitvoeringen u;
Geef de nummers van de medewerkers die de cursus ‘Windows Server’ gevolgd hebben en in de afdeling Verkoop werken.
select i.cursist
from inschrijvingen i
join uitvoeringen u
on i.cursus = u.cursus and i.begindatum = u.begindatum
join cursussen c
on u.cursus = c.code
where c.omschrijving = ‘Windows Server’
intersect
select m.mnr
from medewerkers m
join afdelingen a
on m.afd = a.anr
where a.naam = ‘VERKOOP’;
select i.cursist
from inschrijvingen i
join uitvoeringen u
on i.cursus = u.cursus and i.begindatum = u.begindatum
join cursussen c
on u.cursus = c.code
where c.omschrijving = ‘Windows Server’
intersect
select mnr
from medewerkers
where afd in (select anr from afdelingen where naam = ‘VERKOOP’);