Avatar billede tdimhcs Nybegynder
16. januar 2001 - 13:03 Der er 23 kommentarer og
1 løsning

SQL problem

Hvordan kombinere jeg en SQL forespørgsel til at viser de 10 sidste (som med TOP 10
) forskellige (som med DESTINCT) værdier fra en kolonne? Hvor der sorteres, så den nyeste record står først??

/Kurt
Avatar billede vandhunden Nybegynder
16. januar 2001 - 13:08 #1
Du skal tilsætter DESC til din querystring. Det står for DESCENTING og betyder baglens eller sådan noget. Modsat ASC (ASCENTING) som er standart...
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 13:22 #2
> vandhunden

Joooohhh tak det kender jeg godt, men når jeg kombinere f.eks. TOP 10 og DESTINCT i min SQL, går det galt.

/Kurt
Avatar billede kasseper Nybegynder
16. januar 2001 - 13:26 #3
Jamen så gør sådan her :

select top(10) from (select * from myTable order by name DESC)
Avatar billede vandhunden Nybegynder
16. januar 2001 - 13:29 #4
sejt, kasseper. Der lærte jeg også lige noget nyt.
Avatar billede martinlind Nybegynder
16. januar 2001 - 13:33 #5
du kan også vælge at lave en timestamp kolone og så sortere på den
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 13:45 #6
> kasseper

SELECT TOP(10) FROM (SELECT DISTINCT Titel FROM opgaver)

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

/Kurt

Avatar billede tdimhcs Nybegynder
16. januar 2001 - 13:50 #7
> martinlind

Jeg har en ID(autonummer) kolonne, så det er ingen problem. Ploblemet er at jeg ikke kan sortere på den (DISTINCT) kolonne, og så snart jeg putter en ekstra kolonne ind i min select, bliver visningen ikke forkert!

/Kurt
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 13:51 #8
Fjern \"ikke\" lige før \"forkert\"!

/Kurt
Avatar billede kasseper Nybegynder
16. januar 2001 - 13:56 #9
Hvilken database bruger du ?
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 14:00 #10
Undskyld!!

ACCESS

/Kurt
Avatar billede martinlind Nybegynder
16. januar 2001 - 14:05 #11
Prøv :

SELECT TOP(10) FROM (SELECT DESTINCT Titel FROM opgaver) order by ID DESC

eller

SELECT DESTINCT * FROM opgaver order by ID DESC

eller

SELECT DESTINCT(Titel), ID, Name FROM opgaver ORDER BY ID DESC

/Martin
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 14:09 #12
Denne forespørgsel mangler kun at det bliver de sidste 10 forskellige fra \"Titel\" (alså DISTINCT)

SELECT TOP 10 Titel FROM opgaver ORDER by Opgave_ID DESC


Men så snart jeg forsøger at putte DISTINCT med ind i det, virker det ikke!

/Kurt
Avatar billede kasseper Nybegynder
16. januar 2001 - 14:09 #13
SELECT TOP(10) FROM (SELECT TITEL FROM OPGAVER ORDER BY ID DESC)
Avatar billede kasseper Nybegynder
16. januar 2001 - 14:11 #14
OK : \'SELECT TOP(10) FROM (SELECT Titel FROM Opgaver ORDER BY Opgave_ID DESC)\'
Avatar billede kasseper Nybegynder
16. januar 2001 - 14:12 #15
DAmn havde overset forskellige :

prøv denne :
SELECT TOP(10) FROM (SELECT Title FROM OPGAVER Group by Title) ORDER BY Opgave_ID DESC
Avatar billede kasseper Nybegynder
16. januar 2001 - 14:13 #16
Nogen gange virker DISTINCT ikke helt efter hensigten, men så kan man jo bare bruge Group By.....
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 14:15 #17
> kasseper

SELECT TOP(10) FROM (SELECT TITEL FROM OPGAVER ORDER BY Opgave_ID DESC)

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

/Kurt
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 14:18 #18
> martinlind

[Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

/Kurt
Avatar billede martinlind Nybegynder
16. januar 2001 - 14:18 #19
DISTINCT staves da vist DESTINCT, den gør også dit udtræk langsom, men den er beregnet til at fjerne gentagelser og ikke noget med de første 10, og virker fint.

PS. Husk SQL er stort set det samme som mængdelære

/Martin
Avatar billede martinlind Nybegynder
16. januar 2001 - 14:21 #20
sorry !
DISTINCT er den rigtige stave måde

/Martin
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 14:22 #21
> kasseper

Det er det samme som før!

/Kurt
Avatar billede tdimhcs Nybegynder
16. januar 2001 - 14:28 #22
Jeg tror lige vi skal tage den igen!

Hvordan kombinere jeg en SQL forespørgsel til at viser de 10 sidste (lige som med TOP 10) forskellige (lige som med DESTINCT) værdier fra en kolonne?

glem sorteringen

/Kurt
Avatar billede nazaq Nybegynder
17. januar 2001 - 12:35 #23
Hmmm.. Tricky :-)

Nu kender jeg ikke TOP 10, er det en standard SQL function? men hvad med:

SELECT TOP 10 Opgave_Id,Titel FROM Opgaver
WHERE Opgave_Id IN (
SELECT MAX(Opgave_Id) FROM Opgaver
GROUP BY Titel)
ORDER BY Opgave_Id DESC

Dette virker sansynligvis kun hvis OPGAVE_ID er tal :-)
Avatar billede tdimhcs Nybegynder
17. januar 2001 - 12:48 #24
> nazaq

Cool det virker... TAK

/Kurt
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