Avatar billede golyf Nybegynder
04. december 2003 - 11:16 Der er 6 kommentarer og
1 løsning

Find nyeste Record hvor <entry> ikke indeholder en tom streng

Jeg skal finde nyeste recordsæt, hvor feltet YYY ikke er tomt.

Min tanke var noget i stil med:
strSQL = "Select top 1 * from XXX where YYY not null order by TimeStamp desc"
eller:
strSQL = "Select top 1 * from XXX where len(YYY)>0 order by TimeStamp desc"

Ved godt det ikke er helt så let, men kan det laves i ét SQL kald?
Jeg er ikke stærk i SQL, så lidt brugervenlighed tak.
Resultatet skal bruges i en ASP-side.
Avatar billede krasmussen Nybegynder
04. december 2003 - 11:48 #1
Hvad med: Select max(ID) where YYY is not null. Hvor ID er f.eks. dit nummerfelt, hvis det er fortløbende
Avatar billede golyf Nybegynder
04. december 2003 - 11:57 #2
strSQL = "Select top 1 * from XXX where YYY is not null order by TimeStamp desc"
Avatar billede golyf Nybegynder
04. december 2003 - 11:58 #3
krasmussen ... Så ikke dit svar, men fyr et af, så får du for det alligevel.
Avatar billede trer Nybegynder
04. december 2003 - 12:03 #4
Hvis du kan tilføje en rowversion kolonne, så kan du bruge max(rowversion) til at finde den nyeste record.

Rowversion opdateres nemlig automatisk af sql server, så den sidst opdaterede række altid har højeste rowversion. Check Books Online.

Læg derefter et non-clustered unique index på rowversion.

altså

alter table xxx add rw rowversion not null;
create index ix_xxx on xxx(rw)

Dermed kan du finde rækken ved:

select * from xxx where rw in (select max(rw) from xxx where yyy is not null)
Avatar billede trer Nybegynder
04. december 2003 - 12:06 #5
Obs; Bemærk, ovenstående finder enten den sidst indsatte række eller den sidst opdaterede.

En update påvirker nemlig også rowversion kolonnen - og det er derfor du ikke må lægge et clustered index på den.

Når du indsætter data skal du blot ikke angive rowversion kolonnen i kolonnelisten eller sætte værdien til NULL.
Avatar billede golyf Nybegynder
04. december 2003 - 12:44 #6
Tak ... Det andet funger nu og jeg er lidt under tidspress fra toppen, så din information er helt sikkert nyttig og vil blive brugt senere :-)
Avatar billede krasmussen Nybegynder
04. december 2003 - 14:01 #7
golfy> Det er helt OK - du fik løst problemet, hvilket jo er det vigtigste...
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