08. juli 2001 - 01:10Der er
15 kommentarer og 1 løsning
SQL: Select X antal poster indtil summen af en række er < Y
HejHej Der er ikke en sql-kategori (?), så jeg håber der er nogen hajer her der kan hjælpe.
Jeg sidder med en KÆMPE sql-nød jeg skal have knækket!
Problemstillingen er enkel nok, jeg prøver at forklare: Jeg skal bruge et recordset bestående af de første X antal poster fra tabellen - indtil summen af et vist felt er opfyldt. Antallet af poster er ligegyldigt, bare summen af et vist felt holder sig under Y.
I pseudo-sql: SELECT FROM Tabel WHERE SUM(Felt) < 400 - men den holder desværre ikke :(
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Skal det være i ren SQL? Hvad med at vælge alle, og så i en løkke i ASP (?) finde dem, der giver summen. Du skal vel også have dem ordnet efter et eller andet, eller er det ligemeget hvilke, der giver summen?
Jep, det skal MEGET gerne være en ren SQL-streng (ikke stored procedure), da jeg skal implementere paging ovenpå bagefter. Summen skal komme fra ét specifikt felt.
Jeg har prøvet mig frem med HAVING, GROUP BY osv., men har ikke kunnet få noget til at virke.
Nå, ja, det kender jeg ikke så meget til. I MySql kan man gøre dette
mysql>SET @sum:=0:
mysql>select *,(@sum:=@sum+antal) as a from table having @sum<12 order by d; +------------+----+------+ | d | antal | a | +------------+----+------+ | 2000-09-03 | 3 | 3 | | 2000-10-01 | 5 | 8 | | 2001-11-02 | 4 | 12 | +------------+----+------+ 3 rows in set (0.00 sec)
og der er flere rækker i den originale tabel. Hvad der virker i Access aner jeg ikke.
Okay, lad mig forklare: Jeg har en samling billeder af forskellig bredde, og en 400px bred side de skal være på. Alt efter billedernes bredde er der plads til et variabelt antal billeder. Som sagt er det uhensigtsmæssigt at asp\'e mig ud af det, da der kommer mange sider, som der skal pages imellem. Jeg har billedernes bredde gemt i db\'en sammen med de respektive id-numre + et \'kategori\'-felt som også skal trækkes ud. Jeg begynder lidt at miste troen, men lad endelig de gode forslag strømme :)
Jamen, den er en normal SQL-streng - ingen stored procedure. Det bruges en global variabel i MySql. Og så tager den lige altid én tupel for meget med, men det er noget med rækkefølgen af tingene. Men det virker garanteret ikke i Access :(
I PHP/MySQl er det også to SQL-kald - men du skal slet ikke regne med at syntaksen overhovedet passer. Du kan jo undersøge om Access 2000 SQL understøtter en eller anden form for \"globale variabler\".
Hvis man nu joiner tabellen med sig selv worstcase antal gange? Gah. Det kan godt være det kan gøres. Men det vil helt sikkert give en enorm belastning af databasen hvis du gør det med ren SQL. Der skal noget efterbehandling til. fx et lille javascript på siden der grupperer et worstcase langt array du har udtrukket og fordeler billederne pænt. eller bare standard HTML. skriv billederne som <br><img ...> <img ...> <img ...> <img ...> <img ...> ... så vil HTML dele dem op i linier efter behov.
Well, jeg bed i det sure æble og asp\'ede mig ud af det... Tak for alle forslagene
Synes godt om
Ny brugerNybegynder
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.