EvenAug Skrevet 30. juli 2011 Del Skrevet 30. juli 2011 Hei. Sitter nå med en problemstilling. Slik ser spørringen ut: $db->query("SELECT * FROM articles WHERE article_newspage=true ORDER BY article_timestamp LIMIT 10"); Av disse 10, ønsker jeg å plukke ut 2. Finnes det noen genial måte å gjøre dette på? For eksempel med MySQL sin RAND() funksjon? Eller må jeg legge hver row i en array og plukke ut 2 tilfeldige med php? -Even Lenke til kommentar
BlueEAGLE Skrevet 30. juli 2011 Del Skrevet 30. juli 2011 Det første jeg tenkte var SELECT * FROM (SELECT * FROM articles WHERE article_newspage=true ORDER BY article_timestamp LIMIT 10) ORDER BY RAND LIMIT 2 Vet ikke om slike underutvalg vil fungere i PHP, men i hodet mitt så skal denne spørringen gi to tilfeldige artikler valgt ut fra de ti sist oppdaterte/skrevne. Lenke til kommentar
zandzpider Skrevet 1. august 2011 Del Skrevet 1. august 2011 $db->query("SELECT * FROM articles WHERE article_newspage=true ORDER BY RAND() LIMIT 2"); Lenke til kommentar
molty Skrevet 1. august 2011 Del Skrevet 1. august 2011 Du kan jo legge det i en array $randomA = array(); $count = 0; while($result = mysql_fetch_array($query)){ $randomA[$count] = $result[]; $count++; } $randomN1 = rand(0,9); $randomN2 = rand(0,9); så bare henter du ut informasjonen fra $randomA[$randomN1]['title'] f.eks Mener det skal fungere Du kan også evt. sette inn en sjekk for at tallene ikke er like slik at du ikke plutselig får 2 like og random artikler Lenke til kommentar
BlueEAGLE Skrevet 2. august 2011 Del Skrevet 2. august 2011 $db->query("SELECT * FROM articles WHERE article_newspage=true ORDER BY RAND() LIMIT 2"); Dette vil velge to tilfeldige blandt alle nyhetsartiklene, ikke to blandt de ti nyeste. Lenke til kommentar
zandzpider Skrevet 2. august 2011 Del Skrevet 2. august 2011 My bad. Her er spørringen du leter etter. Juster etter behov =) SELECT * FROM ( SELECT n.* FROM nodes n ORDER BY n.ts_created DESC LIMIT 10 ) x ORDER BY RAND() LIMIT 2 Lenke til kommentar
BlueEAGLE Skrevet 2. august 2011 Del Skrevet 2. august 2011 ...så da gjettet jeg ikke så dårlig. Lenke til kommentar
TheClown Skrevet 4. august 2011 Del Skrevet 4. august 2011 Hei på deg Even! Du er klar over at det er et eget forum for databaser her? Dette er forresten Thomas. Booya. Forresten forresten, det frarådes å bruke RAND() funksjonen i MySQL fordi den er forferdelig treg, den beste løsningen er å hente ut de 10 siste og bruke PHP til å velge ut 2 av de 10 siste. Går mye fortere Lenke til kommentar
BlueEAGLE Skrevet 5. august 2011 Del Skrevet 5. august 2011 Forresten forresten, det frarådes å bruke RAND() funksjonen i MySQL fordi den er forferdelig treg, den beste løsningen er å hente ut de 10 siste og bruke PHP til å velge ut 2 av de 10 siste. Går mye fortere Jeg vil være enig med deg at ORDER BY RAND på en stor tabell vil være tregt da MYSQL bruker en midlertidig tabell for å gjøre det tilfeldige utvalget. Hvis du derimot kun gjør et utvalg på en midlertidig tabell på ti rader så vil ikke dette være nevneværdig tregere enn å hente ut ti rader og velge to tilfeldige i PHP. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå