SQL foutje
Hoi allemaal
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
Misschien zien jullie wat ik fout doe.
Mvg,
Tim
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
Word && niet ergens anders voor gebruikt in SQL query's? Gebruik inplaats van && eens AND. Verder zijn backticks niet aan te raden in SQL query's.
Gewijzigd op 08/02/2011 14:36:13 door Mebus Hackintosh
Ok, maar krijg nog steeds hetzelfde resultaat als eerst justin
En als ik gewoon
doe dan krijg ik ook gewoon het goeie resultaat
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
Simpele vraag, is aantal een getal of tekst?
Zoals jij het invoert is het tekst, en dan kan de sortering wel eens wat raar zijn.
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
Waarom vul je het dan in als tekst?
Staat het ook in een veld dat een int is?
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?
@SanThe, het gaat dan nog steeds om het datatype van aantal.
Als dat bijvoorbeeld een varchar is zal er niks beginnend met een 1 in voorkomen.
Als dat bijvoorbeeld een varchar is zal er niks beginnend met een 1 in voorkomen.
doet het nu perfect SanThe, probleem waren dus de quotes bij de integer
Thanks!
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.
Dacht het nu opgelost te hebben maar krijg nog steeds rare resultaten. word er een beetje maf van.
my query
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?
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?
hoe laat je de resultaten zien
Want als ik die code in phpmyadmin uitvoer dan krijg ik wel die 250 terug
en niet eerst die 10000
Want als ik die code in phpmyadmin uitvoer dan krijg ik wel die 250 terug
en niet eerst die 10000
nou als ik via phpmyadmin uitvoer krijg ik ook 1000 terug
maar als ik neerzet =250 krijg ik wel 250 terug, beetje vaag dus
maar als ik neerzet =250 krijg ik wel 250 terug, beetje vaag dus
dan is je database structuur niet goed.
laat de tabel prijs is zien hier.
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




