WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hur ser sql satsen ut? (https://www.wn.se/forum/showthread.php?t=5383)

Milad 2005-01-08 02:42

Jag har en massa information i en databas (access) där det finns en colum som innehåller datum. Ja vill nu ta fram de 10 rader som är närmast dagens datum, hur ser sql satsen ut då? De ska inte ha passerat dagens datum utan de 10 närmaste framtida datum om man nu kan säga så :)

Eller måste jag till och med ha en if sats för det? Om ja hur skulle den se ut?

Jan Eriksson 2005-01-08 08:26

Är inte med på om det är 10 poster efter dagens datum eller 10 poster precis innan dagens datum men här är kod att leka med.

Access:

SELECT TOP 10 Agenda.Datum, Agenda.Titel
FROM Agenda
GROUP BY Agenda.Datum, Agenda.Titel
HAVING Agenda.Datum<Date()
ORDER BY Agenda.Datum DESC;

/Janne

Robert 2005-01-08 13:08

Milad, skippa GROUP BY i ovanstående exempel om du vill ha 10st poster närmast det angivna datumet. Vill du däremot ha de 10st datum närmast det angivna datumet så kör du ovanstående (men om du har ett datumfält med tid i så får du trixa lite mer, annars så tror jag inte GROUP BY lyckas då klockslag *kanske* är olika för dina poster... beror på hur du har sparat dom iofs)

Milad 2005-01-08 15:37

Ok, nu har jag lekt lite. Grejen är att jag har mer information i db´n att hämta förutom datum så ser min sql sats ut:

sql="SELECT TOP 10 * FROM Files HAVING Files.news_datetime < Date() ORDER BY Files.news_datetime DESC"

Men jag får fel koden:
[Microsoft][ODBC Microsoft Access Driver] HAVING clause (Files.news_datetime<Date()) without grouping or aggregation.

Robert 2005-01-08 15:50

Citat:

Originally posted by Milad@Jan 8 2005, 16:37
Ok, nu har jag lekt lite. Grejen är att jag har mer information i db´n att hämta förutom datum så ser min sql sats ut:

sql="SELECT TOP 10 * FROM Files HAVING Files.news_datetime < Date() ORDER BY Files.news_datetime DESC"

Men jag får fel koden:
[Microsoft][ODBC Microsoft Access Driver] HAVING clause (Files.news_datetime<Date()) without grouping or aggregation.

Byt ut HAVING mot WHERE

Milad 2005-01-08 16:10

Citat:

Ursprungligen postat av Robert
Citat:

Ursprungligen postat av Milad
Ok, nu har jag lekt lite. Grejen är att jag har mer information i db´n att hämta förutom datum så ser min sql sats ut:

sql="SELECT TOP 10 * FROM Files HAVING Files.news_datetime < Date() ORDER BY Files.news_datetime DESC"

Men jag får fel koden:
[Microsoft][ODBC Microsoft Access Driver] HAVING clause (Files.news_datetime<Date()) without grouping or aggregation.

Byt ut HAVING mot WHERE

Har provat det där men det känns som att det inte funkar riktigt. För nu får de 10 top inläggen och inte de 10 som är närmast dagens datum.

Och om jag ändrar ORDER BY så får jag helt plötsligt de som ligger längst ned vilket jag inte ens ville ta ut från första taget med min sql sats.

eg0master 2005-01-08 16:59

Vänd på "<" i anslöutning till getdate om du vill ha framtida inlägg/artiklar. Rimligtvis skall även sorteringen då vara på ASC och inte DESC.

Milad 2005-01-08 17:03

Citat:

Originally posted by eg0master@Jan 8 2005, 17:59
Vänd på "<" i anslöutning till getdate om du vill ha framtida inlägg/artiklar. Rimligtvis skall även sorteringen då vara på ASC och inte DESC.
Funkar inte det heller :(

Milad 2005-01-08 17:27

Sorry eg0master. Nu funkar det. Tack alla. Vad hade jag gjort utan WM?

Robert 2005-01-08 17:28

[edit]... ok nevermind! =)


Alla tider är GMT +2. Klockan är nu 10:03.

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