Avatar billede killel Nybegynder
02. oktober 2008 - 08:46 Der er 12 kommentarer og
2 løsninger

Udtræk af sidste kørsel (mange poster)

Hej,

Jeg har et script som kører hver dag kl 6 som adder fra 4k --> 5k poster i en eksisterende database. Når dataen bliver added bliver der tilføjet dd. til dem i følgende format xxxx-xx-xx.

Jeg vil gerne kunne arbejde med de data som sidst er skrevet til databasen. Noget ala SELECT a,b,c fra x, WHERE addded='nyeste dato'.
Avatar billede diyar Nybegynder
02. oktober 2008 - 09:30 #1
select A.* from x A,
        (select max(date) as date
        from x
        where pkey conditions) B
where B.conditions
and A.date = B.date
Hvis jeg har forstået spørgsmålet, og hvis du har en oprettelses dato, så er det noget i den retning du skal bruge.
Avatar billede killel Nybegynder
02. oktober 2008 - 10:43 #2
Jeg forstår ikke umiddelbart dit svar.

Jeg er med til from x, men så går det også galt - jeg tror det er ved pkey conditions jeg står af, kan du uddybe dit forslag?

Sctriptet skulle gerne indrettes så man ikke selv skal indtaste en dato.
Avatar billede diyar Nybegynder
02. oktober 2008 - 12:05 #3
Hvad med det her?:

SELECT a,b,c
FROM x
WHERE date IN
      (SELECT MAX(date)
        FROM x);
Avatar billede diyar Nybegynder
02. oktober 2008 - 12:11 #4
du kan også bruge min istedet for max, så få du vist det omvendt :)
Avatar billede killel Nybegynder
02. oktober 2008 - 12:58 #5
Det virker ikke umiddelbart, nu har den kørt i 30 min uden at returnere noget...tror den er ved at hente hele tabellen 5+ mill linier
Avatar billede diyar Nybegynder
02. oktober 2008 - 13:57 #6
Altså hvis du har en tabel x med kolonerne a,b, c, d, lad os antage at d står for dato

så kan du bruge den ovenstående script, men istedet for date skal du have d.

Det er meget vigtigt at den koloner som indeholder datoer er af typen Date.

Ellers må du skrive hvad din tabel indeholder af koloner.

Jeg har selv en tabel der ligner det som du har beskrevet, hvor jeg overvåger en kæmpe stor database, hvor i min tabel bliver der gemt informationer om hvem der har ændret i hvilken tabel, hvad, og hvornår. Og jeg har testet den ovenstående script på den, og det virkede fint.
Avatar billede killel Nybegynder
02. oktober 2008 - 14:38 #7
Datokolonnen er af typen Date (den hedder blot added), og det er netop sidste d jeg mangler hjælp til at finde.

Den sidste registrede dato er altid dd. eller dd-1 (hvis scriptet bliver kørt i tidsrummet 00:00:00 --> 05:59:59) da scriptet opdaterer databasen kl 6:00:00.
Avatar billede diyar Nybegynder
02. oktober 2008 - 15:06 #8
ja, så skal du bare gøre sådan her:

SELECT a,b,c
FROM x
WHERE added IN
      (SELECT MAX(added)
        FROM x);

så får du kun vist den række med den nyste dato eller retter sagt den nyste added.
Er det ikke det du vil?
Avatar billede killel Nybegynder
02. oktober 2008 - 15:09 #9
Nix, jeg vil have samtlige rækker som er added med den sidste dato (4-5k rækker)
Avatar billede showsource Seniormester
03. oktober 2008 - 07:53 #10
Umiddelbart virker dette for mig:

SELECT `a`, `b`, `c`
FROM `tabel`
WHERE
`dat` = (SELECT MAX(`dato`) FROM `tabel`)

Altså den henter alle rækker med nyeste dato
Avatar billede killel Nybegynder
03. oktober 2008 - 10:45 #11
Se det kan jeg også få den til.

Takker for hjælpen :)

Vil i dele point?
Avatar billede showsource Seniormester
03. oktober 2008 - 18:27 #12
Det kan vi da godt :O)
Avatar billede killel Nybegynder
04. oktober 2008 - 07:29 #13
Giver lige diyar en dag mere til at skrive svar ellers får du alle point.
Avatar billede diyar Nybegynder
04. oktober 2008 - 09:17 #14
Tak
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