Avatar billede egeriis Nybegynder
07. april 2006 - 11:06 Der er 14 kommentarer og
1 løsning

Sortere / ti højeste

Kan jeg med ét query få de ti hvor kolonnen "views" er højest og sortere disse efter "title"?
Avatar billede razmuz_dk Nybegynder
07. april 2006 - 11:20 #1
SELECT dinKolonne FROM dinTabel ORDER BY views DESC, title

Så'n? :)
Avatar billede torotune Nybegynder
07. april 2006 - 11:21 #2
SELECT TOP 10 FROM Views ORDER BY Title;
Avatar billede razmuz_dk Nybegynder
07. april 2006 - 11:28 #3
Jeg havde vidst misforstået dit spørgsmål egeriis. Sorry...

torotune > er den korrekte syntax ik' sådan her:
SELECT TOP 10 title, views FROM minTabel ORDER BY title
Avatar billede torotune Nybegynder
07. april 2006 - 11:30 #4
jo - du har vist mere ret, var lidt for hurtig :-)
Avatar billede razmuz_dk Nybegynder
07. april 2006 - 11:30 #5
argh, sludder og vrøvl... sådan her:
SELECT TOP 10 views title, views FROM minTabel ORDER BY title

Så henter den de 10 rækker hvor views er højest i tabellen minTabel, den hapser kollorne title og views - til sidst sorterer den på title.
Avatar billede egeriis Nybegynder
07. april 2006 - 11:34 #6
Det kan den sgu ikke lide :(

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10 views,* FROM categories WHERE title LIKE '%a%' && cid!='0' OR

SELECT TOP 10 views,* FROM categories WHERE title LIKE '%a%' && cid!='0' ORDER BY title DESC LIMIT 10
Avatar billede pidgeot Nybegynder
07. april 2006 - 11:34 #7
Det er slet ikke TOP 10 når det er MySQL, der er det LIMIT.

Mit bud: SELECT (SELECT * FROM tabel ORDER BY views LIMIT 10) ORDER BY title

Bemærk dog at dette kræver MySQL 4.1 eller senere.
Avatar billede egeriis Nybegynder
07. april 2006 - 11:41 #8
SELECT (SELECT * FROM categories WHERE title LIKE '%a%' && cid!='0' ORDER BY views LIMIT 10) FROM categories ORDER BY title

Giver flg. fejl:
Operand should contain 1 column(s)
Avatar billede pidgeot Nybegynder
07. april 2006 - 12:36 #9
Så prøver vi den her:

SELECT * FROM categories WHERE views IN (SELECT views FROM categories ORDER BY views DESC LIMIT 10) AND title LIKE '%a%' AND cid<>'0' ORDER BY title
Avatar billede razmuz_dk Nybegynder
07. april 2006 - 12:48 #10
pidgeot > Din WHERE er da forkert? Hvis der fx er flere der har views = '20', så vil der blive hentet mere end 10 ud.

egeriis - har dine rækker ikke en primary-id-kolonne? Erstat "id" med navnet på den kolonne i nedenstående:
SELECT * FROM categories WHERE id IN (SELECT id FROM categories ORDER BY views DESC LIMIT 10) AND title LIKE '%a%' AND cid<>'0' ORDER BY title

I øvrigt mener jeg ikke man må bruge LIMIT i IN's .. hvert fald ikke i mysql 4.1.
Avatar billede arne_v Ekspert
07. april 2006 - 13:26 #11
SELECT * FROM (SELECT * FROM tabel ORDER BY views DESC LIMIT 10) x ORDER BY title

ville være mit bud
Avatar billede pidgeot Nybegynder
07. april 2006 - 18:27 #12
Ja, okay - tænkte ikke lige over det felt ikke var unikt, beklager.
Avatar billede egeriis Nybegynder
10. april 2006 - 15:15 #13
arne_vs eksempel fungerede :)

Hvis der bliver smidt et svar, så kaster jeg nogle point efter dig ;)
Avatar billede egeriis Nybegynder
10. april 2006 - 15:16 #14
Og tusind tak for hjælpen.

For the record:

Jeg kører MySQL 4.1.11 - kan jo være nyttigt at vide, hvis andre skulle søge svar.
Avatar billede arne_v Ekspert
10. april 2006 - 15:31 #15
svar
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