hier zou een slimme opmerking kunnen staan
maar die staat er niet
Waar je wel op zoek naar bent is een WHERE clausule die aangeeft dat er alleen naar de laatste 5 records gekeken moet worden. Of dat kan en hoe dat kan hangt af van de gegevens die in `zoek` staan.
Als je de mogelijkheid tot subqueries hebt zou zoiets kunnen werken:
1
2
3
4
5
6
7
| SELECT max(aantal) FROM archi_monthly WHERE `zoek` > ( SELECT `zoek` FROM archi_monthly ORDER by zoek ASC LIMIT 5,1); |
Regeren is vooruitschuiven
het veld zoek is een combinatie van het jaar getal en het maandgetal: 0601 voor januari 2006 etc etc
hier zou een slimme opmerking kunnen staan
maar die staat er niet
Als subquery's niet ondersteund worden, kan je nog altijd met een tussenstap werken (soort ei van Columbus zeg maar
1) sla die eerste 5 records op in een tijdelijke tabel
2) haal max uit die tabel
Verwijderd
1
| $sql2 = "SELECT max(aantal) FROM archi_monthly WHERE id < '9999' ORDER BY id ASC LIMIT 0,5"; |
Want dan werkt de LIMIT wel, neem ik zo aan.
1
2
3
4
5
| archi_monthly + zoek + jaar + maand + hits + + 0602 + 06 + 02 + 162 + + 0603 + 06 + 03 + 57 + + 0601 + 06 + 01 + 170 + |
met het veld zoek moet ik dus inperken dus opzich zou dat moetenlukken.. ga ik thuis eens eve proberen...
dom dat ik er zosnel overheen gekeken heb.. kan natuurlijk ook zon operator
[ Voor 14% gewijzigd door hobbeldebobbel op 14-03-2006 12:45 ]
hier zou een slimme opmerking kunnen staan
maar die staat er niet
nee, dan krijg je als eerste resultset 9998 rijen (uitgaande dat er meer dan 9999 records zijn, met oplopende id's). De max(aantal) geeft er 1 terug: het maximum. De limit 0,5 is altijd groter dan die ene regel die je terug krijgt... De limit gebeurt achteraf, niet vooraf.Verwijderd schreef op dinsdag 14 maart 2006 @ 12:27:
Ben je er niet al als je een WHERE toevoegt? Bijv.
code:
1 $sql2 = "SELECT max(aantal) FROM archi_monthly WHERE id < '9999' ORDER BY id ASC LIMIT 0,5";
Want dan werkt de LIMIT wel, neem ik zo aan.
waarom niet gewoon:
1
| $sql3 = "SELECT aantal FROM archi_monthly WHERE zoek IN (SELECT zoek FROM archi_monthly LIMIT 0,5)"; |
De subquery geeft de 5 eerste records, de buitenste query het hoogste daarvan.
Subqueries werken wél in mysql, alleen pas sinds de laatste paar versies.
[ Voor 4% gewijzigd door Blackbird-ce op 14-03-2006 12:48 . Reden: id = zoek :) ]
De structuur van de tabel is overigens een beetje vreemd. Waarom sla je de maand en het jaar dubbel op?
Regeren is vooruitschuiven
het veld maand en jaar word ingevuld door een counter.php die die variabelen ook ergens anders gebruikte.. waarom die dan niet hergebruiken
totdat ik een zoekveld moest hebben... dus vandaar... eigenlijk overbodig dus... had inderdaad ook met een substr kunnen werken... maarja
die where clausule had ik inderdaad gewoon overheen gekeken.. dom dom dom
hier zou een slimme opmerking kunnen staan
maar die staat er niet