|
| ORDER BY - en værdi udenfor databasen? Fra : Morten |
Dato : 29-06-04 22:30 |
|
Hejsa
Jeg skal have listet en række emner fra en database i en bestemt rækkefølge,
mit problem er at den værdi de skal sorteres efter ikke står i selve
databasen.
De skal sorteres efter antal dage til en dato i databasen (var =
datediff("d", date, slut-dato)), og det kan derfor variere efter hvad dag
det er ...
Kan det lade sig gøre at sortere dem efter man har hentete dem med sin SQL
sætning - eller er der en anden måde hvorpå man kan sortere dem efter en
værdi, når den ikke står i databasen, men først skal udregnes?
| |
Jens Gyldenkærne Cla~ (29-06-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 29-06-04 23:54 |
|
Morten skrev:
> De skal sorteres efter antal dage til en dato i databasen (var
> = datediff("d", date, slut-dato)), og det kan derfor variere
> efter hvad dag det er ...
Det antal dage du vil sortere efter kan databasen fint regne ud.
Hvis det er Access der er din database, kan du faktisk bruge din
kode næsten som den står:
SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-dato])
(slut-dato skal i kantede paranteser på grund af bindestregen).
Jeg kan ikke helt huske om Access forventer anførselstegn om første
parameter til datediff eller ej - du kan evt. prøve begge dele.
> Kan det lade sig gøre at sortere dem efter man har hentete dem
> med sin SQL sætning
Ja, men det kan ikke anbefales. Sorteringer bør - hvis det
overhovedet er muligt - foretages af databasen. Det er mange gange
hurtigere end sortering i asp.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Henrik Nygaard (30-06-2004)
| Kommentar Fra : Henrik Nygaard |
Dato : 30-06-04 11:01 |
|
> SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-dato])
Jeg har prøvet at putte det ind i en SELECT med WHERE istedet for
ORDER men kan ikke få det til at virke.
AND where DateDiff("d",rs("dato"),dato) >100
Det er kun de records som er under 100 dage forskellige som skal komme
frem. rs("dato") kommer fra en tidligere strSQL og dato kommer fra
denne. De henter fra samme tabel i Access.
Please help....
Henrik
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Mikoangelo (30-06-2004)
| Kommentar Fra : Mikoangelo |
Dato : 30-06-04 11:58 |
|
[On on, 30 jun 2004 10:01:23 GMT, "Henrik Nygaard" wrote (link:
<news:40e28f73$0$23878$14726298@news.sunsite.dk>)]:
[deletia]
> AND where DateDiff("d",rs("dato"),dato) >100
Det skal nok være "...And where DateDiff('d'," & rs("dato") & ",
dato..."
--
Mikoangelo - webmaster of
http://harrypotter.lk-data.net
Scrambled email (ROT-13):
uneelcbggre [on] yx [hyphen] qngn [spot] qx
| |
Jens Gyldenkærne Cla~ (30-06-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 30-06-04 21:58 |
|
Henrik Nygaard skrev:
> AND where DateDiff("d",rs("dato"),dato) >100
Som Mikoangelo er inde på er ovenstående ikke brugbart - du kan
ikke bare sætte en variabelværdi ind uden at bruge
strengsammensætning. Men selv om du så får sat den rigtige dato
ind, har du det sædvanlige problem med at datoer let kan
fejltolkes. Det er en god ide at undgå at den type fejl kan opstå.
> Det er kun de records som er under 100 dage forskellige som
> skal komme frem. rs("dato") kommer fra en tidligere strSQL og
> dato kommer fra denne. De henter fra samme tabel i Access.
Hvad er grunden til at du ikke klarer det hele i én forespørgsel?
Prøv at fortælle lidt mere om hvad du skal udvælge (jeg forstår
ikke helt "under 100 dage forskellige")
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Morten (04-07-2004)
| Kommentar Fra : Morten |
Dato : 04-07-04 23:16 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns951892CDBC8jcdmfdk@gyrosmod.cybercity.dk...
> > Kan det lade sig gøre at sortere dem efter man har hentete dem
> > med sin SQL sætning
>
> Ja, men det kan ikke anbefales. Sorteringer bør - hvis det
> overhovedet er muligt - foretages af databasen. Det er mange gange
> hurtigere end sortering i asp.
Hvis det så ikke er muligt - hvordan ville man så kunne gøre dette ?
| |
Jens Gyldenkærne Cla~ (05-07-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 05-07-04 09:11 |
| | |
Morten (05-07-2004)
| Kommentar Fra : Morten |
Dato : 05-07-04 15:24 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns951D67901F1CCjcdmfdk@gyrosmod.cybercity.dk...
>
> Man kan få et postsæt over i et array med getrows-metoden. Men er
> du 110 % sikker på at sql-sortering ikke er mulig?
Jeg kan ikke få det til at virke iværtfald - jeg prøvede med det du skrev:
query = "SELECT * FROM database ORDER BY" & DateDiff("d", date(), slutdato)
Problemet er at den jo ikke ved hvad "slutdato" er - den står jo inde i
selve databasen, og denne sætning skal jo bruges før jeg kan åbne databasen
.... det er det der er mit problem!
| |
Jens Gyldenkærne Cla~ (05-07-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 05-07-04 21:28 |
|
Morten skrev:
> Jeg kan ikke få det til at virke iværtfald
Ah - men det er altså ikke nødvendigvis det samme som at det ikke
kan løses.
> - jeg prøvede med det du skrev:
>
> query = "SELECT * FROM database ORDER BY" & DateDiff("d",
> date(), slutdato)
Nej - det var ikke hvad jeg skrev. Se linjen her igen:
SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-dato])
Puttet ind i en asp-variabel ser det sådan ud:
query = "SELECT * FROM tabel ORDER BY datediff('d', date(), [slut-
dato])"
(slet linjeskiftet)
Pointen er at Datediff-funktionskaldet skal håndteres af databasen
- ikke af asp. Derfor skal man _ikke_ bruge strengsammensætning i
asp.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Morten (05-07-2004)
| Kommentar Fra : Morten |
Dato : 05-07-04 23:11 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns951DE48EC5B0Fjcdmfdk@gyrosmod.cybercity.dk...
>
> Pointen er at Datediff-funktionskaldet skal håndteres af databasen
> - ikke af asp. Derfor skal man _ikke_ bruge strengsammensætning i
> asp.
Arr, det havde jeg ikke lige luret - jeg troede egentlig ikke at man kunne
bruge funktioner som DateDiff i SQL - kun i ASP.
Men jeg prøvede det du skrev og det virker perfekt, så du har løst et stort
problem for mig og jeg takker mange gange!
Min sætning kom i øvrigt til at se sådan ud:
query = "SELECT * FROM abonnement ORDER BY DateDiff('d', date(),
(DateAdd('m', -abonnement.opsigelse, abonnement.slutdato)))"
(uden linie-skift)
| |
|
|