Toon posts:

[SQL] juiste waarde selecteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Misschien komt het doordat ik al vanaf half 7 aan het zwoegen ben, maar ben nu een dingetje tegen het lijf gelopen wat me voor een vraagteken stelt. Opzich heb ik niet veel moeite met SQL an-sich, maar dit zie ik even niet.

Stel ik heb een tabel met daarin postcoderanges; Ter illustratie:
code:
1
2
3
4
postcode | waarde
3300       | 1
3400       | 2
3500       | 1


De gebruiker voert een postcode in, stel 3362, dan zou het systeem de waarde 1 moeten selecteren, want 3362 < 3400 en > 3300.
Hier loop ik dus even op vast, misschien is het gewoon stommigheid, maar ik zie het niet.
Zouden jullie misschien enig licht op de zaak kunnen werpen voor me?

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

Wat voor SQL code heb je nu en wat probeer je nu precies te selecteren? Is er een range opgegeven in het SQL statement? En hoe is die range dan opgebouwd?

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 01-12 16:01

Koppensneller

winterrrrrr

SQL:
1
SELECT TOP 1 waarde FROM postcodetabel WHERE postcode <= 3362 ORDER BY postcode DESC


Zoiets?

[ Voor 5% gewijzigd door Koppensneller op 17-04-2007 19:29 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op dinsdag 17 april 2007 @ 19:15:
De gebruiker voert een postcode in, stel 3362, dan zou het systeem de waarde 1 moeten selecteren, want 3362 < 3400 en > 3300.
Nee, de 3300 en 3400 hebben niet in de query te zoeken, dus je denkt verkeerd. Je moet je afvragen wat je wil, en wat je wil is blijkbaar de waarde van de rij met een postcode zo dicht mogelijk in de buurt van de inputpostcode, maar wel nog steeds met postcode kleiner dan inputpostcode. Als je query op deze manier weet te beschrijven is het schrijven van de SQL triviaal, met als uitkomst de hierbovenstaande query. :)

{signature}


  • purge
  • Registratie: November 2000
  • Niet online
Zo te zien wil je een selectie maken op de postcode waarbij het verschil met de ingevoerde het kleinst is en waarbij de ingevoerde postcode groter is. Wellicht kan je in je where clause opnemen iets van invoer>=postcode en sorteren op het kleinste verschil ( postcode - invoer ). Neem de waarde van het eerste record, dit zou hem moeten zijn.

edit:
Zo erg vlug hierboven ;-)

[ Voor 22% gewijzigd door purge op 17-04-2007 19:29 ]


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 25-11 22:57

dusty

Celebrate Life!

KoppenSneller schreef op dinsdag 17 april 2007 @ 19:19:
SQL:
1
SELECT TOP 1 waarde FROM postcodetabel WHERE postcode < 3362 ORDER BY postcode DESC


Zoiets?
Werkt, echter niet zeer netjes..

Netter:
SQL:
1
SELECT max(waarde) as waarde from postcodetabel where postcode <3362

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 01-12 16:01

Koppensneller

winterrrrrr

dusty schreef op dinsdag 17 april 2007 @ 19:29:
[...]

Werkt, echter niet zeer netjes..

Netter:
SQL:
1
SELECT max(waarde) as waarde from postcodetabel where postcode <3362
Die is beter inderdaad :)

Verwijderd

Topicstarter
Oké, :+ , heel stom, bedankt voor de reacties iig _/-\o_
Pagina: 1