Ik zal de situatie even schetsen.
Ik heb een database, met daarin 2 tabellen:
Scholen (bevat gegevens van alle scholen in NL)
Opendagen - bevat alle open dagen van de scholen, met opmaak:
* ID_School (numeriek)
* Datum (type datum/tijd)
Per open dag, per school dus een nieuwe record.
De reden dat ik deze aanpak gebruik, is omdat ik nu de scholen een open dag in een bepaald tijdbestek via de SQL query eruit kan filteren (Datum >= #datum# AND Datum <= #datum#).
Nu zit ik met de volgende situatie:
De bezoeker zoekt op scholen met bepaalde eigenschappen (orientatie zoals MBO, HBO, WO, provincie, opleidingen etc) én met een open dag in het tijdsbestek.
Nu heb ik het in eerste instantie zo opgebouwd dat éérst de scholen eruit gepikt worden met een open dag in het tijdsbestek, en dat dan alle scholen eruit getrokken worden met de opgegeven zoekcriteria (dus 2 SQL queries).
Het probleem is dat mijn tweede query te groot wordt:
De eerste SQL, om alle scholen eruit te pikken met een open dag in de komende 12 maanden:
SELECT DISTINCT ID_School FROM Opendagen WHERE ((Datum >= #7-8-2002#) AND (Datum < #7-8-2003#))
De tweede SQL, bijvoorbeeld alle scholen in Noord-Holland, waar ik een economische HBO opleiding kan doen:
SELECT * FROM Scholen WHERE ((Orientatie_HBO = True) AND (Beroepen LIKE '%Economie%') AND (Provincie = 'Noord-Holland') AND ((Id = 1) OR (Id = 3) OR (Id = 4) OR (Id = 5) OR (Id = 6) OR (Id = 7) OR (Id = 9) OR (Id = 13) OR (Id = 25) OR (Id = 37) OR (Id = 39) OR (Id = 51) OR (Id = 55) OR (Id = 59) OR (Id = 82) OR (Id = 90) OR (Id = 107) OR (Id = 123) OR (Id = 129) OR (Id = 136) OR (Id = 140) OR (Id = 141) OR (Id = 144) OR (Id = 146) OR (Id = 147) OR (Id = 148) OR (Id = 150) OR (Id = 151) OR (Id = 152) OR (Id = 155) OR (Id = 157) OR (Id = 158) OR (Id = 168) OR (Id = 170) OR (Id = 172) OR (Id = 175) OR (Id = 176) OR (Id = 177) OR (Id = 179) OR (Id = 184) OR (Id = 187) OR (Id = 188) OR (Id = 190) OR (Id = 193) OR (Id = 196) OR (Id = 198) OR (Id = 201) OR (Id = 205) OR (Id = 215) OR (Id = 221) OR (Id = 229) OR (Id = 230) OR (Id = 247) OR (Id = 253) OR (Id = 254) OR (Id = 255) OR (Id = 258) OR (Id = 261) OR (Id = 262) OR (Id = 266) OR (Id = 268) OR (Id = 269) OR (Id = 270) OR (Id = 271))) ORDER BY Schoolnaam, Plaats;
Ik moet dus op de een of andere manier ervoor zorgen dat deze 2 queries gecombineerd worden tot 1 enkele...
Hoe doe ik dat ?
Ik heb een database, met daarin 2 tabellen:
Scholen (bevat gegevens van alle scholen in NL)
Opendagen - bevat alle open dagen van de scholen, met opmaak:
* ID_School (numeriek)
* Datum (type datum/tijd)
Per open dag, per school dus een nieuwe record.
De reden dat ik deze aanpak gebruik, is omdat ik nu de scholen een open dag in een bepaald tijdbestek via de SQL query eruit kan filteren (Datum >= #datum# AND Datum <= #datum#).
Nu zit ik met de volgende situatie:
De bezoeker zoekt op scholen met bepaalde eigenschappen (orientatie zoals MBO, HBO, WO, provincie, opleidingen etc) én met een open dag in het tijdsbestek.
Nu heb ik het in eerste instantie zo opgebouwd dat éérst de scholen eruit gepikt worden met een open dag in het tijdsbestek, en dat dan alle scholen eruit getrokken worden met de opgegeven zoekcriteria (dus 2 SQL queries).
Het probleem is dat mijn tweede query te groot wordt:
De eerste SQL, om alle scholen eruit te pikken met een open dag in de komende 12 maanden:
SELECT DISTINCT ID_School FROM Opendagen WHERE ((Datum >= #7-8-2002#) AND (Datum < #7-8-2003#))
De tweede SQL, bijvoorbeeld alle scholen in Noord-Holland, waar ik een economische HBO opleiding kan doen:
SELECT * FROM Scholen WHERE ((Orientatie_HBO = True) AND (Beroepen LIKE '%Economie%') AND (Provincie = 'Noord-Holland') AND ((Id = 1) OR (Id = 3) OR (Id = 4) OR (Id = 5) OR (Id = 6) OR (Id = 7) OR (Id = 9) OR (Id = 13) OR (Id = 25) OR (Id = 37) OR (Id = 39) OR (Id = 51) OR (Id = 55) OR (Id = 59) OR (Id = 82) OR (Id = 90) OR (Id = 107) OR (Id = 123) OR (Id = 129) OR (Id = 136) OR (Id = 140) OR (Id = 141) OR (Id = 144) OR (Id = 146) OR (Id = 147) OR (Id = 148) OR (Id = 150) OR (Id = 151) OR (Id = 152) OR (Id = 155) OR (Id = 157) OR (Id = 158) OR (Id = 168) OR (Id = 170) OR (Id = 172) OR (Id = 175) OR (Id = 176) OR (Id = 177) OR (Id = 179) OR (Id = 184) OR (Id = 187) OR (Id = 188) OR (Id = 190) OR (Id = 193) OR (Id = 196) OR (Id = 198) OR (Id = 201) OR (Id = 205) OR (Id = 215) OR (Id = 221) OR (Id = 229) OR (Id = 230) OR (Id = 247) OR (Id = 253) OR (Id = 254) OR (Id = 255) OR (Id = 258) OR (Id = 261) OR (Id = 262) OR (Id = 266) OR (Id = 268) OR (Id = 269) OR (Id = 270) OR (Id = 271))) ORDER BY Schoolnaam, Plaats;
Ik moet dus op de een of andere manier ervoor zorgen dat deze 2 queries gecombineerd worden tot 1 enkele...
Hoe doe ik dat ?
Geef mij maar een Warsteiner.