/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Stored Procedure SELECT
Fra : René Rolighed Christ~


Dato : 05-07-01 16:54

Hvis jeg eksempelvis har en Select statement der f.eks. ligner denne:

SELECT id, dato_fra, dato_til FROM tbl_test ORDER BY dato_til DESC

Så får jeg sorteret mit recordset efter dato_til med den nyeste dato først.
Hvis jeg nu har nogle records hvor dato_til er Null - og gerne vil have dem
listet før resten af datoerne (som stadig er sorteret desc)? Hvorledes kan
dette lade sig gøre?

Jeg forestiller mig noget med at jeg kan erstatte Null's?

Hjælp
R.Rolighed



 
 
Jonas Delfs (07-07-2001)
Kommentar
Fra : Jonas Delfs


Dato : 07-07-01 15:17

"René Rolighed Christensen" <rolighed@nospam-freestyler.dk> skrev i en
meddelelse news:3b448cc3$0$12802$edfadb0f@dspool01.news.tele.dk...

> Hvis jeg eksempelvis har en Select statement der f.eks. ligner denne:
>
> SELECT id, dato_fra, dato_til FROM tbl_test ORDER BY dato_til DESC
>
> Så får jeg sorteret mit recordset efter dato_til med den nyeste dato
først.
> Hvis jeg nu har nogle records hvor dato_til er Null - og gerne vil have
dem
> listet før resten af datoerne (som stadig er sorteret desc)? Hvorledes kan
> dette lade sig gøre?

Hvilket format gemmer du dato'en i?

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



René Rolighed Christ~ (16-07-2001)
Kommentar
Fra : René Rolighed Christ~


Dato : 16-07-01 21:12

Datoen er gemt i datetime! Null's allowed!

/Rolighed

"Jonas Delfs" <jonas@nospam.delfs.dk> wrote in message
news:9i75fp$bnl$1@sunsite.dk...
> "René Rolighed Christensen" <rolighed@nospam-freestyler.dk> skrev i en
> meddelelse news:3b448cc3$0$12802$edfadb0f@dspool01.news.tele.dk...
>
> > Hvis jeg eksempelvis har en Select statement der f.eks. ligner denne:
> >
> > SELECT id, dato_fra, dato_til FROM tbl_test ORDER BY dato_til DESC
> >
> > Så får jeg sorteret mit recordset efter dato_til med den nyeste dato
> først.
> > Hvis jeg nu har nogle records hvor dato_til er Null - og gerne vil have
> dem
> > listet før resten af datoerne (som stadig er sorteret desc)? Hvorledes
kan
> > dette lade sig gøre?
>
> Hvilket format gemmer du dato'en i?
>
> --
> Mvh. Jonas Delfs, http://delfs.dk
> e72bd3e51a7937c87d28b85d677a97b2
>
>



Jonas Delfs (16-07-2001)
Kommentar
Fra : Jonas Delfs


Dato : 16-07-01 21:28

"René Rolighed Christensen" <rolighed@nospam-freestyler.dk> skrev i en
meddelelse news:3b534a05$0$295$edfadb0f@dspool01.news.tele.dk...

> Datoen er gemt i datetime!

Okay. Nu er det lang tid siden du stillede spørgsmålet så jeg kan ikke lige
huske hvilket idé jeg havde, men du kunne måske bruge MySQL's
replace()-funktion til at erstatte NULL med den højest tilladte værdi når du
sorterer.
http://www.mysql.com/doc/S/t/String_functions.html

--
Mvh. Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



René Rolighed Christ~ (17-07-2001)
Kommentar
Fra : René Rolighed Christ~


Dato : 17-07-01 23:04

Nu er det MS SQL Server, så MySQL kommandoer er ikke altid så heldige!

Men jeg havde også selv tænkt over noget lignende, og er fundet frem til
følgende løsning:

SELECT bla bla ORDER BY ISNULL(tid_til, DATEADD(year, 75, GETDATE())) DESC

....Altså erstatter jeg et eventuelt NULL med dags dato plus 75 år i
sorteringen.
Dette virker fint til mit brug, men vil selvfølgelig ikke kunne bruges i
mange situationer... alt efter hvad datoerne bruges til og hvad NULL betyder
i den sammenhæng!

Men tak for hjælpen.

/Rolighed

"Jonas Delfs" <jonas@nospam.delfs.dk> wrote in message
news:9ivijm$jtc$1@sunsite.dk...
> "René Rolighed Christensen" <rolighed@nospam-freestyler.dk> skrev i en
> meddelelse news:3b534a05$0$295$edfadb0f@dspool01.news.tele.dk...
>
> > Datoen er gemt i datetime!
>
> Okay. Nu er det lang tid siden du stillede spørgsmålet så jeg kan ikke
lige
> huske hvilket idé jeg havde, men du kunne måske bruge MySQL's
> replace()-funktion til at erstatte NULL med den højest tilladte værdi når
du
> sorterer.
> http://www.mysql.com/doc/S/t/String_functions.html
>
> --
> Mvh. Jonas Delfs, http://delfs.dk
> e72bd3e51a7937c87d28b85d677a97b2
>
>



Peter Lykkegaard (18-07-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 18-07-01 07:39


"René Rolighed Christensen" <rolighed@nospam-freestyler.dk> wrote in message
news:3b54b648$0$69731$edfadb0f@dspool01.news.tele.dk...
> Nu er det MS SQL Server, så MySQL kommandoer er ikke altid så heldige!
>
> Men jeg havde også selv tænkt over noget lignende, og er fundet frem til
> følgende løsning:
>
> SELECT bla bla ORDER BY ISNULL(tid_til, DATEADD(year, 75, GETDATE())) DESC
>
> ...Altså erstatter jeg et eventuelt NULL med dags dato plus 75 år i
> sorteringen.
> Dette virker fint til mit brug, men vil selvfølgelig ikke kunne bruges i
> mange situationer... alt efter hvad datoerne bruges til og hvad NULL
betyder
> i den sammenhæng!
>
Du kan evt returnere to recordsets fra din sp
Først selecter du alle poster hvor dit felt er lig med Null og derefter
resten af posterne
Din løsning gør at MSSQL ikke bruger index, men laver en tablescan

mvh/Peter Lykkegaard



Kristian Damm Jensen (18-07-2001)
Kommentar
Fra : Kristian Damm Jensen


Dato : 18-07-01 12:32

Peter Lykkegaard wrote:
>
> "René Rolighed Christensen" <rolighed@nospam-freestyler.dk> wrote in message
> news:3b54b648$0$69731$edfadb0f@dspool01.news.tele.dk...
> > Nu er det MS SQL Server, så MySQL kommandoer er ikke altid så heldige!
> >
> > Men jeg havde også selv tænkt over noget lignende, og er fundet frem til
> > følgende løsning:
> >
> > SELECT bla bla ORDER BY ISNULL(tid_til, DATEADD(year, 75, GETDATE())) DESC
> >
> > ...Altså erstatter jeg et eventuelt NULL med dags dato plus 75 år i
> > sorteringen.
> > Dette virker fint til mit brug, men vil selvfølgelig ikke kunne bruges i
> > mange situationer... alt efter hvad datoerne bruges til og hvad NULL
> betyder
> > i den sammenhæng!
> >
> Du kan evt returnere to recordsets fra din sp
> Først selecter du alle poster hvor dit felt er lig med Null og derefter
> resten af posterne
> Din løsning gør at MSSQL ikke bruger index, men laver en tablescan

Sikker?

Der er trods alt kun tale om en order by. På det tidspunkt bør al
selektering være afsluttet, og skidtet hældt over i en temp-tabel.

Hvis den tilhørende where-klausul er fornuftig kan MSSQL vel stadig
finde ud af at bruge den. Og hvis ikke, er der ikke tabt noget
alligevel.

--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@cgey.dk | http://www.thehungersite.com
Two wrongs doesn't make a right, but three lefts does.


Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408638
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste