Toon posts:

[ASP] Zoekfunctie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Momenteel bezig om een search in een tabel te filteren aan de hand van areacodes die bij een gebruikersprofiel horen. Die areacodes duiden op postcodes van provincies. Bv. provincie oostvlaanderen heeft areacodes tussen 90 en 99. Nu als een gebruiker aangegeven heeft in zijn profiel om alle areacodes voor oostvlaanderen (tussen 90 en 99) en westvlaanderen (tussen 80 en 89), moet ik enkel resultaten (formulieren met een postcode) laten zien voor die betreffende areacodes.

Momenteel is mijn SQL zo :
SQL = "SELECT areacode,woonplaats,ID,voornaam,naam,toegevoegd_op FROM bedrijf_vapz WHERE actief = 1 ORDER BY ID DESC"

Hier moet dus nog een stuk bij voor het filteren op areacode. Bv : SQL = "SELECT areacode,woonplaats,ID,voornaam,naam,toegevoegd_op FROM bedrijf_vapz WHERE actief = 1 AND areacode BETWEEN 10 AND 12 ORDER BY ID DESC"

Het stukje AND areacode BETWEEN 10 AND 12 haal ik uit het gebruikersprofiel (ik check namelijk eerst welke areacodes de gebruiker wil) :

if prov1 = 1 then SQLextra = "AND areacode BETWEEN 10 AND 12" end if

wat dus brengt :
SQL = "SELECT areacode,woonplaats,ID,voornaam,naam,toegevoegd_op FROM bedrijf_vapz WHERE actief = 1 "&SQLextra&" ORDER BY ID DESC"

Nu ligt het probleem niet bij het zoeken op 1 term, maar wanneer mijn SQLextra nog andere areacodes moet controleren. Ik moet wel beginnen met een AND maar tussen het filteren van areacodes moet ik OR gebruiken. Dus bv zo : SQL = "SELECT areacode,woonplaats,ID,voornaam,naam,toegevoegd_op FROM bedrijf_vapz WHERE actief = 1 AND areacode BETWEEN 10 AND 12 OR areacode BETWEEN 90 AND 94 ORDER BY ID DESC"

Iemand een idee hoe ik die SQLextra opstel? Heb me al rot gezocht en geprobeerd maar zonder resultaat.
Hopelijk snapt er iemand iets van, want het is nogal moeilijk uit te leggen.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je moet met haakjes gaan werken:

WHERE Actief = 1 (AND AreaCode BETWEEN 10 AND 20 OR AreaCode BETWEEN 90 AND 94)

Als alternatief zou je nog naar de IN () clausule kunnen kijken:

WHERE AreaCode IN (10,11,18,20,93)

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey thx alvast, maar waarom die haakjes?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 05 januari 2011 @ 10:28:
Hey thx alvast, maar waarom die haakjes?
Omdat:
code:
1
where foo=bar and x=y or a=b

niet hetzelfde is als:
code:
1
where (foo=bar) and (x=y or a=b)

;)

In het eerste geval voldoet elk record waar a=b of foo=bar en x=y
In het tweede geval moet foo=bar zijn én x=y of a=b

[ Voor 19% gewijzigd door RobIII op 05-01-2011 10:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kijk hier eens. :)

Logical Operator Precedence.

[ Voor 11% gewijzigd door CodeCaster op 05-01-2011 10:37 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ahja ok, lijkt me vrij logisch, silly me :-)
ik ga zelf eerst nog wat proberen, alvast bedankt
Pagina: 1