PDA

Bekijk Volledige Versie : [SQL - PHP] Between werkt niet



Paul Sidler
24/05/04, 13:35
Hallo NIWS,

Ik heb een MySQL database, met daarin een TEXT-field waar ik getallen in
zet. Ik heb INT geprobeerd maar kreeg hier geen decimalen in, klopt dat?
(dit leek me namelijk een van de oorzaken voor onderstaand probleem)

Als ik namelijk zeg:

SELECT * FROM table WHERE `prijs` BETWEEN '$prijs1' AND '$prijs2'

Met de waarden $prijs1 = '1.00' en $prijs2 = '2.00' geeft hij tussen de
(juiste) resultaten ook 12.76 weer. Dat klopt toch niet? Hetzelfde resultaat
krijg ik als ik de volgende query uitvoer

SELECT * FROM table WHERE `prijs` >= '$prijs1' AND `prijs` <= '$prijs2'

Kunnen jullie mij helpen?

Alvast hartelijk bedankt!

Groeten,
Paul

Jaap-Andre de Hoop
24/05/04, 13:45
In article <c8smis$ko3$1@reader11.wxs.nl>, "Paul Sidler" <paul@imagecmopany.nl> wrote:
>Hallo NIWS,
>
>Ik heb een MySQL database, met daarin een TEXT-field waar ik getallen in
>zet. Ik heb INT geprobeerd maar kreeg hier geen decimalen in, klopt dat?
>(dit leek me namelijk een van de oorzaken voor onderstaand probleem)
>
>Als ik namelijk zeg:
>
>SELECT * FROM table WHERE `prijs` BETWEEN '$prijs1' AND '$prijs2'
>
>Met de waarden $prijs1 = '1.00' en $prijs2 = '2.00' geeft hij tussen de
>(juiste) resultaten ook 12.76 weer. Dat klopt toch niet? Hetzelfde resultaat
>krijg ik als ik de volgende query uitvoer

als je het als text-veld gedefinieerd hebt, klopt het wel, 12.76 ligt
'alfabetisch' tussen 1.00 en 2.00
oplossing is te vinden op:
http://dev.mysql.com/doc/mysql/en/Numeric_type_overview.html
float ligt wrs voor de hand.


Jaap-Andre

Paul Sidler
24/05/04, 14:15
"Jaap-Andre de Hoop" <doemaarietsanders@data-assist.nl> schreef:
> In article <c8smis$ko3$1@reader11.wxs.nl>, "Paul Sidler"
<paul@imagecmopany.nl> wrote:
> >Hallo NIWS,
> >
> >Ik heb een MySQL database, met daarin een TEXT-field waar ik getallen in
> >zet. Ik heb INT geprobeerd maar kreeg hier geen decimalen in, klopt dat?
> >(dit leek me namelijk een van de oorzaken voor onderstaand probleem)
> >
> >Als ik namelijk zeg:
> >
> >SELECT * FROM table WHERE `prijs` BETWEEN '$prijs1' AND '$prijs2'
> >
> >Met de waarden $prijs1 = '1.00' en $prijs2 = '2.00' geeft hij tussen de
> >(juiste) resultaten ook 12.76 weer. Dat klopt toch niet? Hetzelfde
resultaat
> >krijg ik als ik de volgende query uitvoer
>
> als je het als text-veld gedefinieerd hebt, klopt het wel, 12.76 ligt
> 'alfabetisch' tussen 1.00 en 2.00
> oplossing is te vinden op:
> http://dev.mysql.com/doc/mysql/en/Numeric_type_overview.html
> float ligt wrs voor de hand.

Hartelijk dank, float geeft inderdaad het goede resultaat! Nu werkt het
prima. Het was dus blijkbaar toch een kwestie van RTFM maar toen ik daarin
zocht heb ik blijkbaar niet de juiste zoekwoorden ingegeven.

Ik neem aan dat er qua werking geen verschil zit tussen de query met
"BETWEEN" en de >= en <= vergelijking, behalve dat BETWEEN ook voor tekst
werkt?

Groeten,
Paul

Jaap-Andre de Hoop
24/05/04, 16:55
In article <c8sp5g$40u$1@reader08.wxs.nl>, "Paul Sidler" <paul@imagecmopany.nl> wrote:
>
>Ik neem aan dat er qua werking geen verschil zit tussen de query met
>"BETWEEN" en de >= en <= vergelijking, behalve dat BETWEEN ook voor tekst
>werkt?

qua werking misschien wel, qua uitkomst niet. zoals je zelf al merkte kan je
ook met <= tekst vergelijken. Between zou wel eens sneller KUNNEN zijn, maar
dat zou je moeten proberen of rftmen.

Jaap-Andre