Avatar billede friis5 Novice
26. september 2008 - 14:29 Der er 10 kommentarer og
1 løsning

Tabel spørgsmål

Hej, jeg er helt ny i Oracle - sidder lige og fedter med et kald!

SELECT  t1.var1, t1.var2, t1.date1,
        t1.date2 AS seneste_opdatering, t1.date3 AS foerste_opdatering
    FROM stamdata t1
  WHERE t1.date1 >= TO_DATE ('6/18/2008', 'mm/dd/yyyy')
    AND t1.date3 >= TO_DATE ('6/18/2008', 'mm/dd/yyyy')
    AND t1.date2 = (SELECT MAX (t2.date)
                          FROM stamdata t2)
ORDER BY t1.var2 DESC

Problemer er hvordan jeg får oprettet min foerste_opdatering smartest muligt?

Takker.
Avatar billede arne_v Ekspert
28. september 2008 - 01:47 #1
Det er ikke helt klart for mig hvordan en SELECT og en opdatering hænger sammen.

foerste_opdatering skal vel sættes af første opdatering ??
Avatar billede friis5 Novice
29. september 2008 - 16:43 #2
Ja det var rigtig rodet skrevet.

Har en masse variable, der bliver opdateret hver dag fra dagen de bliver oprettet. Her i blandt en dato-variabel indeholdende dato for opdatering.

Har brug for en udskrift der indeholder; distinct(Var1) og så den sidste af Var2, Var3 osv. Derudover skal jeg have den seneste dato Var1 er blevet opdateret og første gang Var1 blev opdateret.

Håber det giver mere mening nu :)
Avatar billede arne_v Ekspert
29. september 2008 - 20:33 #3
Jeg er stadig ikke sikker ppå at jeg forstår dig.

SELECT var1,MIN(opdateret),MAX(opdateret)
FROM tabel
GROUP BY var1

vil give dig distincte var1 og første og sidste opdatering for den.

Hvis du med "sidste af var2, var3" mener dem det svarer til MAX(opdateret), så kan du:

SELECT *
FROM tabel x,(SELECT var1,MIN(opdateret) AS minop,MAX(opdateret) AS maxop FROM tabel GROUP BY var1) y
WHERE x.var1=y.var1 AND x.opdateret=y.maxop
Avatar billede friis5 Novice
30. september 2008 - 12:18 #4
Det var den nederste tak - dog er opslaget sindsygt langsomt :(

Men det var jo ikke hvad jeg spurgte om til at starte med :) - så tak for svaret :)

SELECT  x.var1, x.var2, x.var3,
        y.minop, y.maxop, x.var4,
        x.var5, x.var6, x.var7
    FROM tabel x,
        (SELECT  var1, MIN (dato) AS minop,
                  MAX (dato) AS maxop
              FROM tabel
          GROUP BY var1) y
  WHERE x.var1 = y.var1
    AND x.dato = y.maxop
    AND x.dato >= TO_DATE ('7/7/2008', 'mm/dd/yyyy')
    AND x.var4 >= TO_DATE ('7/7/2008', 'mm/dd/yyyy')
ORDER BY x.var4 DESC
Avatar billede arne_v Ekspert
30. september 2008 - 14:30 #5
har du index paa dato, var1 og var3 felterne ?
Avatar billede friis5 Novice
03. oktober 2008 - 10:51 #6
Ikke for at lyde totalt uvidende - hvad betyder det :/

Med andre ord, jeg har ingen idé :/
Avatar billede arne_v Ekspert
03. oktober 2008 - 15:33 #7
Avatar billede arne_v Ekspert
03. oktober 2008 - 15:34 #8
index paa de 3 felter kunne godt forbedre performance rigtigt meget
Avatar billede friis5 Novice
06. oktober 2008 - 09:26 #9
Jeg takker for din hjælp, men jeg blev ikke meget klogere af artiklen, og jeg tror ikke jeg har nogen form for mulighed, for at indeksere databasen.

Send et svar og du får point :)
Avatar billede arne_v Ekspert
06. oktober 2008 - 15:19 #10
ok
Avatar billede arne_v Ekspert
25. oktober 2008 - 23:06 #11
så mangler du bare at acceptere svaret
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