Avatar billede Slettet bruger
31. juli 2006 - 23:12 Der er 8 kommentarer

Udskriv nyeste data fra tabel

Jeg har en database hvor jeg gerne vil have skrevet de 10 nyeste tilføjelser ud på en side.
Kan det gøres uden at lave et nyt felt der hedder dato eller er det den bedste og nemmeste vej?

Hvordan gør jeg hvis jeg har flere tabeller hvor jeg skal have de 10 nyeste fra, altså den 10 seneste der er tilføjet uanset fra hvilken tabel den kommer fra. (Nyeste spil der er blevet uploaded)

Hvis jeg f.eks. har en database der hedder games og 4 tabeller der hedder arcade, sport, puzzle og kids hvor jeg vil have skrevet navnet ud på den seneste tilføjet.
Avatar billede pidgeot Nybegynder
31. juli 2006 - 23:19 #1
Det kan ikke gøres uden et dato-felt når det er flere tabeller. Man kan godt "fuske" lidt med ID når det kun er en tabel og man kun skal have hvornår de er tilføjet, ikke hvornår de er ændret, men ellers skal du have nogle tidspunkter at gå ud fra. Det kræver en ekstra kolonne.

Alternativet er så at lave en helt ny tabel til formålet, som registrerer ID, tabel og tidspunkt, og så vælge rækkerne ud enkeltvis (ID kan *teknisk set* undværes, men så er det noget mere besværligt at hive ud i den rigtige rækkefølge).
Avatar billede pidgeot Nybegynder
31. juli 2006 - 23:28 #2
Hovsa - tidspunkt var netop ikke nødvendigt, sålænge hver række har et ekstra ID.
Avatar billede dr_chaos Nybegynder
01. august 2006 - 07:57 #3
eksempel på det som pidgeot skriver om

SELECT TOP 10 Navn FROM arcade ORDER BY IDfelt DESC
Avatar billede dr_chaos Nybegynder
01. august 2006 - 07:58 #4
Skal være:
SELECT TOP 10 Navn,IDfelt  FROM arcade ORDER BY IDfelt DESC
Avatar billede Slettet bruger
01. august 2006 - 16:21 #5
Okay, når du skriver TOP 10 - er det noget der eksisterer i SQL ??

Altså, blev i enige om jeg skulle lave en ny tabel hvor jeg smider dem i eller hvordan? Eller kan det gøres direkte som dr chaos skriver?
Avatar billede Slettet bruger
01. august 2006 - 19:38 #6
Kan jeg evt. lave noget lignende
SELECT TOP 10 Navn FROM arcade, sport, action ORDER BY IDfelt DESC
Altså så den tager det nyeste fra flere tabeller på den måde eller kan det ikke lade sig gøre?
Avatar billede pidgeot Nybegynder
01. august 2006 - 20:48 #7
Nej, det er netop derfor du skal have den logtabel hvis du vil undgå et datofelt på de andre tabeller. Logtabellen kan nemlig sige dig hvor de sidste 10 indsættelser har været, og ud fra det kan du så lave forespørgsler på de andre tabeller. Det du prøver på gør ikke, da der ikke er forbindelse mellem ID-felterne - det at tabel1 sætter et ID på 10000 ind betyder ikke at tabel 2 sætter 10001 ind bagefter.

TOP 10 er måden man fortæller en Access/MSSQL database at man kun skal have de 10 første poster. Det hedder noget forskelligt i de enkelte databaser, så vi skal vide hvad du bruger (dvs. Access, MSSQL, MySQL, etc.).
Avatar billede Slettet bruger
01. august 2006 - 21:07 #8
Okay.... Jeg har dog lavet datofelter på alle tabellerne nu, men det med Logtabellen lyder smart. Men er godt nok ikke lige klar over hvordan jeg skal lave det, altså så den får information om hvad der kommer ind?
Jeg bruger access.
Men kan det laves nemt nu hvor jeg har datofelt i alle tabellerne?
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
Kurser inden for grundlæggende programmering

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