Avatar billede mrbs Nybegynder
25. marts 2006 - 00:33 Der er 15 kommentarer og
1 løsning

begrænse visningen i mysql

Hvordan begrænser jeg visningen i en query, til de ti rækker med højest værdi i "id", samtidig med at de bliver vist efter stigende værdi?
Avatar billede arne_v Ekspert
25. marts 2006 - 01:05 #1
tilpas ny MySQL:

SELECT * FROM (SELECT * FROM tabelnavn ORDER BY id DESC LIMIT 10) X ORDER BY id ASC

vil jeg tro
Avatar billede mrbs Nybegynder
25. marts 2006 - 01:12 #2
Mener du at det skal skrives som det står der?
Den giver følgende fejlmeddelelse:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /free1go/a/s/www.asign.1go.dk/admin/index.php on line 52

Ved denne kode:
$query = mysql_query("SELECT * FROM (SELECT * FROM $table_prefix}log ORDER BY id DESC LIMIT 3) X ORDER BY id ASC");
Avatar billede arne_v Ekspert
25. marts 2006 - 01:13 #3
ja

men

$table_prefix}log

set lidt suspekt ud ....
Avatar billede arne_v Ekspert
25. marts 2006 - 01:14 #4
og så forudsætter det 4.1 eller nyere
Avatar billede mrbs Nybegynder
25. marts 2006 - 01:14 #5
Der mangler lige et { foran $table_prefix}, men det virker stadig ikke, og giver samme meddelelse!
Avatar billede mrbs Nybegynder
25. marts 2006 - 01:15 #6
Har 4.1 :)
Avatar billede arne_v Ekspert
25. marts 2006 - 01:51 #7
det virker fint hos mig:

mysql> select * from t1;
+----+-------+
| F1 | F2    |
+----+-------+
|  1 | A    |
|  2 | BB    |
|  3 | CCC  |
|  4 | DDDD  |
|  5 | EEEEE |
+----+-------+
5 rows in set (0.05 sec)

mysql> select * from (select * from t1 order by f1 desc limit 3) x order by f1 asc;
+----+-------+
| F1 | F2    |
+----+-------+
|  3 | CCC  |
|  4 | DDDD  |
|  5 | EEEEE |
+----+-------+
3 rows in set (0.01 sec)

så prøv lige at udskriv din SQL streng inde du udfører den og se om den er OK
Avatar billede mrbs Nybegynder
25. marts 2006 - 09:08 #8
DETTE:

//definerer hvad der skal hentes fra databasen
$queryline = "select * from (select * from {$table_prefix}log order by id desc limit 3) x order by id asc";

echo "$queryline<br />";

$query = mysql_query("$queryline");

//for hver række skrives følgende
while ($row = mysql_fetch_array($query)) {

UDSKRIVER DETTE:

select * from (select * from asign_log order by id desc limit 3) x order by id asc

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /free1go/a/s/www.asign.1go.dk/admin/index.php on line 55

HVOR "while..." er linie 55
Avatar billede mrbs Nybegynder
25. marts 2006 - 09:12 #9
Strengen som bliver udskrevet er rigitg ifølge hvad jeg kan se...
Avatar billede arne_v Ekspert
25. marts 2006 - 22:03 #10
$query = mysql_query("$queryline") or die(mysql_error());

så kan vi se hvad fejlen er

mit gæt er at det er et eller andet banalt (assign med 2 s'er eller lignende)
Avatar billede mrbs Nybegynder
25. marts 2006 - 22:07 #11
OK.. Er ikke lige i nærheden af min ftp, men tjekker lige senere!
Avatar billede Slettet bruger
27. marts 2006 - 19:32 #12
Jeg vil gætte på at synderen er det x lige efter parentesen.
Avatar billede mrbs Nybegynder
27. marts 2006 - 19:42 #13
Jeg har helt droppet ideen, men du har nok ret... Undrede mig også over det.

Hvad vil I have a point - jeg lukker spørgsmålet...

20 til arne_v ??
10 til sandbox ??

Som tak for hjælpen...??
Avatar billede arne_v Ekspert
27. marts 2006 - 19:45 #14
nix

det skal vaere der

det er "navnet" paa den "tabel" som subquery bruges som
Avatar billede Slettet bruger
27. marts 2006 - 19:53 #15
Det har du da ret i Arne. Jeg er bare vant til altid at skrive AS for at gøre det tydeligt, at der er tale om et alias.

Derudover vil jeg da mene, at men godt kan bruge en subquery "anonymt", eller det kan man måske ikke?

mrbs: Nej bare giv dem til Arne.
Avatar billede arne_v Ekspert
27. marts 2006 - 20:53 #16
jeg mener ikke at man kan lade den subquery vaere anonym

(maaske kan man i MySQL og ikke i SQLServer - der er ihvertfald
nogle tilfaelde hvor den skal vaere der)

og et svar fra mig
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
Computerworld tilbyder specialiserede kurser i database-management

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