[ASP/Access] Mn queries zijn te groot :(

Pagina: 1
Acties:
  • 37 views sinds 30-01-2008

  • Knakker
  • Registratie: April 2000
  • Laatst online: 31-07 17:39
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 ?

Geef mij maar een Warsteiner.


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Zoiets ongeveer, niet getest:
code:
1
2
3
4
5
6
7
8
SELECT * FROM Scholen As S
INNER JOIN Opendagen As O
ON S.Id = O.ID_School
WHERE S.Orientatie_HBO = True
  AND S.Beroepen LIKE '%Economie%'
  AND S.Provincie = 'Noord-Holland'
  AND O.Datum >= #7-8-2002#
  AND O.Datum < #7-8-2003#

  • rambo-2001
  • Registratie: November 2000
  • Laatst online: 02-01-2024

rambo-2001

be anonymous

ik ga er vanuit dat in beide tabels "ID_School" staat.

verander je datum naar jaar maand dag in verband met zoeken

20021231 = 31-12-2002

20030101 = 1-1-2003

verder moet je sql string waarschijnlijk een innerjoin hebben.

probeer eerst eens in access een goede querie te maken en kopiereer dan de sql string in de je asp bestand

cs skill - making a desert eagle out of tooth picks


  • whoami
  • Registratie: December 2000
  • Laatst online: 20:22
In plaats van
code:
1
OR (ID = 1) OR (ID = 3) ORD (ID = 4) ...

kun je ook
code:
1
WHERE ID IN (1, 3, 4, ...)

Dat maakt het geheel er heel wat leesbaarder op.

Verder is dit eigenlijk gewoon basic SQL. Lees even een boekje over SQL of volg een tutorial zou ik zeggen.

https://fgheysels.github.io/


Dit topic is gesloten.