Det beror på vad du använder för dbms. För SQL Server kan det se ut så här:
SELECT TOP 30 * FROM tabellen ORDER BY newid()
Mvh
9 svar · 376 visningar · startad av Poppe25
Hur gör man när man ska hämta slumpvis 30 st valda poster ur en databas? Ett sätt är förstås att hämta upp alla poster med select * from tabell, men om man redan i sqlfrågan vill slumpa fram 30 st poster så att dessa är de enda man hämtar upp, hur gör man då?
Databasposterna ser ut som följer:
id int() "Primärnyckeln"
quiz varchar()
Det beror på vad du använder för dbms. För SQL Server kan det se ut så här:
SELECT TOP 30 * FROM tabellen ORDER BY newid()
Mvh
Anropet sker via php till en MySQL-server. Koden som du föreskagit: exakt vad gör den? Slumpar den fram 30 nya poster varje gång man använder frågan?
Ja, den slumpar fram 30 poster varje gång den körs. Dock fungerar den inte i MySQL, en sådan fråga borde se ut så här:
SELECT * FROM tabellen ORDER BY rand() LIMIT 30
Ungefär. Jag använder inte MySQL, så jag är inte säker, men det kanske får dig iväg en bit på vägen.
Mvh
Tack för så snabbt svar! Jag ska strax prova den.
Känner du till förresten om det kan uppstå problem om man har en textfil liggandes på en server, när klienter läser och skriver ifrån den. Kan det uppstå problem med att någon skriver samtidigt som någon annan läser ifrån den?
Jag skriptar i php som sagt och det är inte så viktigt att alla som läser ifrån filen alltid får senaste innehållet.
Jag kan inte svara på din filfråga, men det finns det säkert någon annan som kan. Prova att ställa den frågan i PHP-forumet.
Fick du din SQL-fråga att fungera?
Mvh
Att plocka fram ett slumpmässig post ur en mysql-tabel, så gör man som @nders skrev, jag använder följande fråga för att plocka fram ett slumpmässig historia på min saijt:
$query="select * from historier,hist_type where historier.typ=hist_type.id order by rand() limit 1";
När det gäller PHP och fillåsning så kan du tiltta på flock() funktionen: http://www.se.php.net/manual/en/function.flock.php
Är det någon som vet hur man gör detsamma i pgSQL?