Avatar billede dank Nybegynder
23. januar 2004 - 13:09 Der er 5 kommentarer og
2 løsninger

kun finde hver 5 record

Jeg har en database med en masse rækker der hvér har en unik id, f.eks.

1
2
3
o.s.v.

Jeg skal køre en 5 løkker. De skal hvér især kun select'e et nummer i rækken, f.eks.

1 = løkke1
2 = løkke2
3 = løkke3
4 = løkke4
5 = løkke5
6 = løkke1
7 = løkke2

osv.

Min select ser således ud:

$result = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($result)) {

Hvordan kan jeg gøre så ovenstående kun spørger på de rækker der hedder 1, 6, 11, 16, 21 o.s.v.?
Avatar billede dank Nybegynder
23. januar 2004 - 13:10 #1
Årsagen til at jeg skal sprede det over flere løkker er fordi der er noget socket connection der ikke er tungt for serveren, men tager lang tid. Jeg vil godt have afviklet en masse på én gang, hvorfor jeg vil starte flere prosessor.
Avatar billede jpvj Nybegynder
23. januar 2004 - 13:25 #2
Du burde kunne tilføje noget i stil med:

... WHERE (id MOD 5) = threadID

hvor threadID = 0 for den første tråd, threadID = 1 for den anden tråd osv.

I PHP hedder MOD funktionen formodentlig %, men jeg er ikke sikker.

Se i dokumentaionen efter "modulo"
Avatar billede jpvj Nybegynder
23. januar 2004 - 13:26 #3
Du kunne i øvrigt optimere det noget ved at lave en ekstra kolonne, hvor værdien var id % 5 - så skulle SQL serveren ikke læse/beregne så meget i hvert select kald.

kolonnen skulle natuligvis være indexeret, men ikke unik.
Avatar billede dank Nybegynder
23. januar 2004 - 17:19 #4
jeg er ikke helt sikkert på jeg forstår.. Er der nogen der kan forklare

Jeg kan ikke finde noget på php.net omkring modulo

Anyone?
Avatar billede apache999 Nybegynder
23. januar 2004 - 20:45 #5
Jeg har forstået det således, at du vil have hver femte række startende med nr 1, dvs 1,6,11,16 osv.

Såre simpelt: SELECT * FROM users WHERE id%5 = 1

% kaldes modulus-operatoren (forbehold for stavefejl) og angiver resten ved division med det tal, man skriver bagved. 7%3 giver således 1, idet 3 går op i 7 to gange med 1 til rest.

Var det det?
Avatar billede apache999 Nybegynder
23. januar 2004 - 20:49 #6
Hov. Gik ligesom ud fra, du har en kolonne, der hedder "id". Jeg går ud fra, det er det, du mener, når du siger at rækkerne "hedder" 1,6,11 osv. Du må lige omdøbe "id" til det, du kalder indekserings-kolonnen
Avatar billede dank Nybegynder
23. januar 2004 - 21:22 #7
Ja netop... i deler point.. jpvj kom egentligt med det rigtige svar, men ikke så godt forklaret.. det klarede apache999 derimod.. så i deler, ok?

Takker til jer begge.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester