WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hjälp med avancerad SQL-sträng (https://www.wn.se/forum/showthread.php?t=1037830)

Lando 2009-09-06 00:04

Hjälp med avancerad SQL-sträng
 
Hej!

Jag behöver hjälp med SQL. Jag har en databas med testresultat och jag vill hämta ut de senaste 50 och sortera dem efter resultatet. tex:

SELECT * FROM resultat ORDER BY date DESC LIMIT 50.

Och sedan på denna strängen ORDER BY resultat DESC.

(Jag vet att man kan skriva ORDER BY date DESC, resultat DESC men det löser inte mitt problem).

Hjälp någon?

KarlRoos 2009-09-06 00:44

Hur ser resultat fältet ut? Är det en siffra?

Lando 2009-09-06 01:00

Citat:

Ursprungligen postat av KarlRoos (Inlägg 20320915)
Hur ser resultat fältet ut? Är det en siffra?

Svaret är ja

digiArt 2009-09-06 09:43

Principen som jag brukar nyttja:

SELECT * FROM Tabell WHERE PrimaryKey IN (SELECT TOP 50 PrimaryKey FROM Tabell ORDER BY DateCol) ORDER BY ResultCol

Kör du sql-server finns det alternativ med CTE (common table expressions) som är något effektivare.

Lando 2009-09-06 14:54

Jag får det inte riktigt att funka:

#1064 - 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 '50 res_id FROM test_result ORDER BY res_date) ORDER BY res_result

Så här ser SQLn ut:
SELECT * FROM test_result WHERE res_id IN (SELECT TOP 50 res_id FROM test_result ORDER BY res_date) ORDER BY res_result

Hjälp? :(

Reager 2009-09-06 15:41

TOP är för SQL-server, motsvarigheten i MySQL är Limit. Dock fungerar det inte att använda Limit i en IN-sats i MySQL (åtminstone inte den version som Binero kör vilket är femman tror jag)

Lando 2009-09-06 15:45

Faan också! Vad gör jag då?

RickardP 2009-09-06 16:13

Låter som du får ta ut resultatet ur första sql frågan och fixa sorteringen efteråt.

Lindahl 2009-09-06 19:30

Detta funkar i MySQL för mig:
SELECT * FROM (SELECT * FROM resultat ORDER BY date DESC LIMIT 50) AS s ORDER BY resultat DESC

Lando 2009-09-09 04:15

Perfekt!

Tusen tack! :D


Alla tider är GMT +2. Klockan är nu 20:07.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson