Hallo iedereen,

Ik heb een tabel waarin lessen staan van een schoolrooster.

lessons
id
studentnumber
week
day
hour
teacher
subject

week = week van het jaar, deze week dus 21
day = 0 (maandag) t/m 5 (vrijdag)
hour = 1 t/m 8

Voorbeeld data:

1   3206343    22    1    8    KOR10   NETL
2   2342342    22    1    8    KOR10   NETL
3   3206343    22    1    7    KEH10   INF
4   2342342    22    1    7    KEH10   INF

Nu wil ik van de docenten KOR10 en KEH10 (dit zijn hun afkortingen die ook worden gebruikt in de kolom teacher) weten wanneer ze in week 22 tegelijk op school zijn. Met andere woorden: ik wil weten in week 22 wanneer zowel de week, day en hour bij de docenten gelijk zijn en ze dus tegelijk op school aanwezig zijn.

Ik heb van alles geprobeerd (met bijv. een self-join), maar ik krijg steeds rijen terug waarbij 1 docent les geeft op een moment dat de andere het niet doet.

Heeft iemand enig idee?
Dat is geen vergelijking.

Je moet een EXPLAIN voor de query zetten, dan weet je hoeveel rijen er intern afgelopen moeten worden.
Als er voor een SELECT DISTINCT in de subquery dus eerst 3 rijen moeten worden afgelopen om uiteindelijk één rij op te leveren, moet die combinatie dus worden nagegaan.
Dus in het gunstigste geval (1x3x3x1) blijft het gelijk.

Daarnaast is het zo als die kolommen waarop je filtert niet geindexed zijn, je gewoon een full table scan krijgt, dan toch liever twee full table scans dan vier.

Explain verkaart een hoop ;-)

Reageren