SQL foutje
Ik stuit net op een hele rare fout, het kan ook gewoon zijn dat ik gewoon te gestresst ben en het door de drukte in mijn hoofd niet zie, maarja hier komt het
als ik een query uitvoer die kijkt naar:
Formaat: a4
aantal: 10000
vind die gewoon netjes een row
maar nu wou ik graag dat als de aantal niet voorkomt dat hij de eerste de beste erboven pakt, hier als voorbeeld als er 9900 ingevoerd word hij dus 10.000 pakt. maar ik krijg 99000 terug. heel raar dus.
Dit is de query
Code (php)
1
2
3
4
2
3
4
SELECT `aantal`, `4werkdagen` FROM `prijs`
WHERE
`aantal` >= '9900' &&
`formaat` = 'A4' ORDER BY `aantal` ASC LIMIT 1
WHERE
`aantal` >= '9900' &&
`formaat` = 'A4' ORDER BY `aantal` ASC LIMIT 1
Misschien zien jullie wat ik fout doe.
Mvg,
Tim
Code (php)
1
SELECT aantal, 4werkdagen FROM prijs WHERE aantal >= "9900" AND formaat = "A4" ORDER BY aantal ASC LIMIT 0,1
- Backticks horen niet in SQL
- && vervangen in SQL door AND
- Enkele quotes vervangen door dubbele
- LIMIT ook een 0 meegeven, het moet liggen tussen 0,1
Gewijzigd op 08/02/2011 14:36:13 door Mebus Hackintosh
En als ik gewoon
Code (php)
1
SELECT aantal, 4werkdagen FROM prijs WHERE aantal >= "10000" AND formaat = "A4" ORDER BY aantal ASC LIMIT 0,1
doe dan krijg ik ook gewoon het goeie resultaat
Gewijzigd op 08/02/2011 14:38:08 door Tim Kampherbeek
Justin S op 08/02/2011 14:33:39:
- Backticks horen niet in SQL
- && vervangen in SQL door AND
- Enkele quotes vervangen door dubbele
- LIMIT ook een 0 meegeven, het moet liggen tussen 0,1
- && vervangen in SQL door AND
- Enkele quotes vervangen door dubbele
- LIMIT ook een 0 meegeven, het moet liggen tussen 0,1
Graag wel correcte antwoorden geven.
- Juist.
- Juist.
- Onjuist.
- Onjuist.
SanThe jij bent gewoon GENIAAL, dus jij weet vast het antwoord op mijn vraag ook wel? haha
Zoals jij het invoert is het tekst, en dan kan de sortering wel eens wat raar zijn.
Gewijzigd op 08/02/2011 14:58:45 door TJVB tvb
getal zoals je ziet
Staat het ook in een veld dat een int is?
Begin eens met 4werkdagen een normale naam te geven. Een cijfer als eerste character in een naam is niet correct.
TJVB tvb op 08/02/2011 14:59:26:
Dit inderdaad.Staat het ook in een veld dat een int is?
Even uit nieuwsgierigheid... wat zit er eigenlijk voor waarde in die 4werkdagen?
Als dat bijvoorbeeld een varchar is zal er niks beginnend met een 1 in voorkomen.
Thanks!
Ozzie PHP op 08/02/2011 15:06:41:
Even uit nieuwsgierigheid... wat zit er eigenlijk voor waarde in die 4werkdagen?
Inderdaad, dit ruikt naar verkeerd database model.
my query
Code (php)
1
2
3
4
2
3
4
SELECT aantal, 4werkdagen FROM prijs
WHERE
aantal >= 250 AND
formaat = 'A4' ORDER BY aantal ASC LIMIT 1
WHERE
aantal >= 250 AND
formaat = 'A4' ORDER BY aantal ASC LIMIT 1
in mijn database staat duidelijk een row met 250 als aantal en formaat als a4
Maar toch krijg ik als eerst de row met aantal 10000 terug.
Weet iemand waarom?
Want als ik die code in phpmyadmin uitvoer dan krijg ik wel die 250 terug
en niet eerst die 10000
maar als ik neerzet =250 krijg ik wel 250 terug, beetje vaag dus
laat de tabel prijs is zien hier.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE `prijs` (
`prijsID` int(12) NOT NULL auto_increment,
`formaat` varchar(250) NOT NULL,
`gewicht` varchar(250) NOT NULL,
`aantal` varchar(250) NOT NULL,
`4werkdagen` varchar(250) NOT NULL,
`1werkdag` varchar(250) NOT NULL,
`2werkdagen` varchar(250) NOT NULL,
`kortingcoating` varchar(250) NOT NULL,
`coating` varchar(250) NOT NULL,
`hoeken` varchar(250) NOT NULL,
PRIMARY KEY (`prijsID`)
) ENGINE=MyISAM AUTO_INCREMENT=4399 DEFAULT CHARSET=latin1 AUTO_INCREMENT=4399 ;
`prijsID` int(12) NOT NULL auto_increment,
`formaat` varchar(250) NOT NULL,
`gewicht` varchar(250) NOT NULL,
`aantal` varchar(250) NOT NULL,
`4werkdagen` varchar(250) NOT NULL,
`1werkdag` varchar(250) NOT NULL,
`2werkdagen` varchar(250) NOT NULL,
`kortingcoating` varchar(250) NOT NULL,
`coating` varchar(250) NOT NULL,
`hoeken` varchar(250) NOT NULL,
PRIMARY KEY (`prijsID`)
) ENGINE=MyISAM AUTO_INCREMENT=4399 DEFAULT CHARSET=latin1 AUTO_INCREMENT=4399 ;
Nou welke mongol die heeft opgemaakt spoort ook niet. probleem dus al gevonden Thnx
Gewijzigd op 10/02/2011 22:13:50 door Tim Kampherbeek