Avatar billede patrickpetersen Nybegynder
10. maj 2011 - 09:03 Der er 14 kommentarer og
1 løsning

Hjælp til dato funktion i sql

Hey, jeg er kørt lidt fast efterhånden som dagen i går gik, og her til morgen må jeg give op. Jeg kan simpelthen ikke få det mest simple sql til at virke lige pt., og håbede lidt nogen kunne hjælpe :)

Jeg har en database i access her:
http://peecee.dk/upload/view/305941

En oversigt vil se sådan her ud:
http://peecee.dk/upload/view/305942

Jeg vil meget gerne bare have et Output der giver mig
| ÅR | Antal Fejl i alt |
Avatar billede Slettet bruger
10. maj 2011 - 09:32 #1
Mener du sådan her?~)

SELECT Format([Dato],"yyyy") AS Aar, Sum(Fejl.AntalF) AS Fejl
FROM Fejl
GROUP BY Format([Dato],"yyyy")
ORDER BY Format([Dato],"yyyy");
Avatar billede patrickpetersen Nybegynder
10. maj 2011 - 09:32 #2
Jeg kunne måske lige skrive den jeg havde lavet indtil videre:

SELECT Produktion.Dato AS År, Count(Fejl.Dato) AS [Antal fejl i alt]
FROM Fejl INNER JOIN Produktion ON Fejl.ProdRegID = Produktion.ProdRegID
WHERE (((Produktion.Dato) Between #1/1/2005# And #12/31/2009#))
GROUP BY Produktion.Dato;

Problemet er at den kører hver dato ud
Jeg vil bare gerne have der står
2005 | 100
2006 | 30

eller hvor mange fejl der nu er..
Avatar billede Slettet bruger
10. maj 2011 - 09:35 #3
du kan også hæfte fejltyper på..

SELECT Format([Dato],"yyyy") AS Aar, FejlTyper.Fnavn AS Fejl, Sum(Fejl.AntalF) AS Antal
FROM Fejl INNER JOIN FejlTyper ON Fejl.FtNr = FejlTyper.FtNr
GROUP BY Format([Dato],"yyyy"), FejlTyper.Fnavn
ORDER BY Format([Dato],"yyyy"), FejlTyper.Fnavn;

..noget i den retning!~)
Avatar billede patrickpetersen Nybegynder
10. maj 2011 - 09:38 #4
spg : Jeg kan ikke få den du skriver til at virke når jeg fylder mine værdier i :(
Avatar billede Slettet bruger
10. maj 2011 - 09:38 #5
du kan lave din egen sql sådan her:

SELECT Format([fejl].[Dato],"yyyy") AS År, Count(Fejl.Dato) AS [Antal fejl i alt]
FROM Fejl INNER JOIN Produktion ON Fejl.ProdRegID = Produktion.ProdRegID
WHERE (((Produktion.Dato) Between #1/1/2005# And #12/31/2009#))
GROUP BY Format([fejl].[Dato],"yyyy");
Avatar billede Slettet bruger
10. maj 2011 - 09:41 #6
#4> nej, der skal ikke fyldes nogen værdier i, den viser bare alle år og en sammentælling af fejl. Den har dog ikke fat i Produktions tabellen, men jeg har datoen i produktionstabellen og i fejltabellen mistænkt for at være den samme, så det burde være fint!~)
Avatar billede patrickpetersen Nybegynder
10. maj 2011 - 09:52 #7
Okay, det er fandme super! :D Jeg havde SLET overhovedet ikke tænkt på format(), jeg kørte simpelthen fast i year()
Mange tak! :)
Avatar billede Slettet bruger
10. maj 2011 - 10:01 #8
Det er jo herligt... format funktionen er god, du skal bare huske, at hvis du bruger den til at finde eks. ugenr, så skal kigge lidt nærmere på funktionen for så skal den formateres til, om det f.eks. er dk eller us standard, det gælder også hvis det nr for dag i ugen. Definition for årets første uge er nemlig forskellige og så starter de jo den nye uge om søndagen!~)
Avatar billede patrickpetersen Nybegynder
10. maj 2011 - 10:53 #9
Når jeg har :
SELECT Format([Dato],"yyyy") AS År, FejlTyper.Fnavn AS Fejl, FejlTyper.FtNr, Sum(Fejl.AntalF) AS Antal
FROM Fejl INNER JOIN FejlTyper ON Fejl.FtNr = FejlTyper.FtNr
GROUP BY Format([Dato],"yyyy"), FejlTyper.Fnavn, FejlTyper.FtNr
ORDER BY Format([Dato],"yyyy");


Og jeg kun vil have fejltype 1 og 2 frem, hvorfor virker så ikke?:
SELECT Format([Dato],"yyyy") AS År, FejlTyper.Fnavn AS Fejl, FejlTyper.FtNr, Sum(Fejl.AntalF) AS Antal
FROM Fejl INNER JOIN FejlTyper ON Fejl.FtNr = FejlTyper.FtNr
WHERE FejlTyper.FtNr = '1' AND FejlTyper.FtNr = '2';
GROUP BY Format([Dato],"yyyy"), FejlTyper.Fnavn, FejlTyper.FtNr
ORDER BY Format([Dato],"yyyy");
Avatar billede Slettet bruger
10. maj 2011 - 12:04 #10
SELECT Format([Dato],"yyyy") AS År, FejlTyper.Fnavn AS Fejl, FejlTyper.FtNr, Sum(Fejl.AntalF) AS Antal
FROM Fejl INNER JOIN FejlTyper ON Fejl.FtNr = FejlTyper.FtNr
GROUP BY Format([Dato],"yyyy"), FejlTyper.Fnavn, FejlTyper.FtNr
HAVING (((FejlTyper.FtNr)=1 Or (FejlTyper.FtNr)=2))
ORDER BY Format([Dato],"yyyy");
Avatar billede Slettet bruger
10. maj 2011 - 12:11 #11
...du havde også sat dit kriterie til at feltet skulle være både 1 og 2... det skal være 1 eller 2!~)
Avatar billede patrickpetersen Nybegynder
10. maj 2011 - 20:05 #12
Men er det ikke også korrekt når jeg vil have output til både fejltype 1 og 2?
Avatar billede Slettet bruger
10. maj 2011 - 20:18 #13
du skal huske at den tjekker en post af gangen, dvs. den starter i den første post tjekker om den post er både 1 og 2. Den er den jo ikke den er måske 1 eller måske 2 men ikke begge dele. Derfor skal du bruge OR!~)
Avatar billede patrickpetersen Nybegynder
16. maj 2011 - 13:52 #14
Årh..! Mange tak skal du have :D
Avatar billede patrickpetersen Nybegynder
23. maj 2011 - 14:06 #15
Jeg ved godt det er en anden tråd, men det kunne være du ville hjælpe mig igen. Det er samme database og samme relationer.. :
http://www.eksperten.dk/spm/938961

Håber du vil :)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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