Archiv verlassen und diese Seite im Standarddesign anzeigen : Gelöst: SQL - Verknüpfen 2er Tabellen und berechnen
Hallo, ich habe mal wieder eine Frage, denn ich habe ein Problem mit SQL.
Und zwar, ich habe 2 Tabellen:
Datum_2009_2010 --> (Datum, Wochentag, AT_Jahr, KW, Wochentag) --> hier stehen die Arbeitstage, KW, datum etc.
statistik_tag --> (sdate, sprod, svobs, svofs, svosl, smenge) --> Hier stehen das Datum, die Produktgruppe, und die jeweiligen "benutzten Produkte"
Ich Filter mir die Produktgruppen raus die ich benötige, die wirklichen Arbeitstage (Sam, Son feiertag fällt raus) --> Ab WHERE bis GROUP (Das klappt auch)
Nun möchte ich die "benutzten Produkte" für jedes Datum aufsummieren. (svobs, svofs, svosl, smenge). Das klappt aber leider nicht bei mir mit der SUM(statistik_tag.smenge). Wieso?
Und das beste wäre, wenn ich den jeweiligen Arbeitstag von 2009+2010 (nicht Datum) nebeneinander anzeigen lassen könnte. (Also 1. Arbeitstag 2009 war z.B. der 3.1.2009, der 1. Arbeitstag 2010 war z.B. der 5.1.2010)
Da bin ich mir allerdings nicht sicher, wie ich das machen soll, denn in der einen tabelle stehen die Arbeitstage für 2009+2010, in der anderen nur das datum. Könnt Ihr mir bei einem der probleme helfen? Achja, Anzeigen lasse ich mir das bequem per Access.
Hier der Code:
SELECT
Datum_2009_2010.Datum,
Datum_2009_2010.Wochentag,
Datum_2009_2010.AT_Jahr,
Datum_2009_2010.KW,
Datum_2009_2010.Arbeitstag,
statistik_tag.sdate,
statistik_tag.sprod,
sum(statistik_tag.svobs),
sum(statistik_tag.svofs),
sum(statistik_tag.svosl),
sum(statistik_tag.smenge)
FROM Datum_2009_2010 INNER JOIN statistik_tag ON Datum_2009_2010.Datum = statistik_tag.sdate
WHERE (((Datum_2009_2010.Arbeitstag)<>0) AND
((statistik_tag.sprod) Like "113*" Or
(statistik_tag.sprod) Like "116*" Or
(statistik_tag.sprod) Like "121*" Or
(statistik_tag.sprod) Like "122*" Or
(statistik_tag.sprod) Like "136*"))
GROUP BY
Datum_2009_2010.Datum,
Datum_2009_2010.Wochentag,
Datum_2009_2010.AT_Jahr,
Datum_2009_2010.KW,
Datum_2009_2010.Arbeitstag,
statistik_tag.sdate,
statistik_tag.sprod;
Vielen Dank
Mikes-PCHilfe
23.03.2010, 19:27
Puhh, ich würd sagen, da ist quasi schon bei der Struktur einiges schief gelaufen, so ein Datenbankkonstrukt überhaupt zu entwickeln...
Aber davon abgesehen, müsste das eigentlich so passen. Wie sieht denn die Ausgabe aus?
lol :D wem sagst du das. Das Problem dabei ist, die eine Tabelle besteht seit 2005. Nun sind die Bedürfnisse gewachsen und jemand hat noch ne neue Tabelle mit den Arbeitstagen angelegt. Und will nun diese auch verglichen haben? Dieses Problem wurmt mich seid Tagen.
Zur Ansicht:
Er summiert die Positionen "svobs, svofs, svosl, smenge" nicht.
Bsp.: Es werden mir am 4.1.2010 usw. immernoch 1000de Zeilen angezeigt mit ihrer eigenen summe. Also... mit sum() == ohne sum() ???
Habs hinbekommen. Musste nur sprod aus der Group herausnehmen.
Nun habe ich aber folgende Frage:
Case in Acces geht irgendwie nicht.
Ne Ahnung warum?
case Datum_2009_2010.Wochentag
When '1' then 'Montag'
When '2' then 'Dienstag'
When '3' then 'Mittwoch'
When '4' then 'Donnerstag'
When '5' then 'Freitag'
end
_____________________________________________
Hat sich erledigt. Habs heraus gefunden
Switch(Datum_2009_2010.Wochentag=1, "Montag",
Datum_2009_2010.Wochentag=2, "Dienstag",
Datum_2009_2010.Wochentag=3, "Mittwoch",
Datum_2009_2010.Wochentag=4, "Donnerstag",
Datum_2009_2010.Wochentag=5, "Freitag") AS Wochentag,
Wäre aber noch die Frage offen, wie ich die Arbeitstage filtern könnte und eine differenz zwischen 2009/2010 anzeigen lassen könnte.
MfG Euer Gulm
Nochmal ich (blöder Sp@mmer) ;-)
Habe ein weiteres Problem, woran ich den ganzen bescheidenen Tag schon dran sitze.
Würde mir gerne ein weiteres Kriterium einbauen...
Datum < HEUTE - 1 Jahr [AND] Datum >=1.1.2010
Aber irgendwie erkennt er bei mir nicht die getdate() Funktion. Und wenn ich now() benutze will er zusätzliche Parameter von mir haben!
Er meckert schon hierbei:
(Datum < DATEADD(year,-1,getdate())
Please Help
Mikes-PCHilfe
24.03.2010, 16:49
Gibts getdate() denn in Access SQL überhaupt? Glaube die gibts nur in VBA.
Das ist ja das Kuriose....
Datum < DATEADD(year,-1,getdate()) hatte ich mir aus einer schon bestehenden Abfrage rauskopiert. Bei der Abfrage klappt es? Bei meiner Abfrage ist getdate() unbekannt. Mit now(),date() bekomm ich es auch nicht gebacken. Ist doch sch***e. Und Access ist auch sch***e. :D
So, Was soll ich denn statt getdate() nehmen? Müsste doch eigendlich mit Now() gehen oder nicht?
Datum < DATEADD(year,-1,now())
Was mache ich denn da falsch?
MfG
P.S. Hat diese Seite eigendlich Banner in der "alten" standard größe 468*60px
Mikes-PCHilfe
24.03.2010, 20:27
Schau mal hier: http://www.dbforums.com/microsoft-access/985139-what-access-sql-command-getdate-sql.html
P.S. Hier gibts Banner: http://www.mikes-pchilfe.de/index.php?mod=link_us
Vielen Dank für die extrem schnelle Antwort.
Ich werde das morgen gleich mal ausprobieren.
Habe dich mal auf Paar meiner Seiten verlinkt. Ich habe da zwar schon einige Zeit nichts mehr dran gemacht, aber egal... Wenns dich stört, nehme ich sie sofort wieder raus.
http://www.freiewelten.de/index.php?go=Partner
http://www.Knispelland.de/index.php?go=Partner
http://www.omog.de/index.php?go=Partner
So, habs ausprobiert. Hätte in Acces so aussehen müssen: DATEADD("yyyy",-1,now()). Son Schei**
Sonnst klappt jetzt die Anzeige. Ich würde halt gerne noch immer die jeweiligen Arbeitstage miteinander verrechnen,
also 1. AT 2010 - 1. AT 2009 as Testspalte.
So schauts aus:
1385
Am besten und übersichtlichsten wäre es glaube ich, wenn ich die jeweiligen Arbeitstage in eine Zeile bringe
--> Also aus 2 Zeilen mach eine. Sprich: Zeile 1 und 2 werden nebeneinander dargestellt. Zeile 3+4, 5+6 etc.
Halt immer dann, wenn die Arbeitstage gleich sind?
Wie mache ich dass denn?
____________________________________
Hat sich erledigt. Ich habe jetzt einfach eine Abfrage für 2009 und eine für 2010 geschrieben und diese miteinander verknüpft. Das ich da nicht gleich drauf gekommen bin. So gings ganz schnell und einfach
LG
DerGulm
Mikes-PCHilfe
25.03.2010, 19:33
http://www.freiewelten.de/index.php?go=Partner
http://www.Knispelland.de/index.php?go=Partner
http://www.omog.de/index.php?go=Partner
Danke, leider hast du überall Mikes-PCHsilfe.de geschrieben (s zuviel)
Mikes-PCHilfe
25.03.2010, 19:35
So, habs ausprobiert. Hätte in Acces so aussehen müssen: DATEADD("yyyy",-1,now()). Son Schei**
Sonnst klappt jetzt die Anzeige. Ich würde halt gerne noch immer die jeweiligen Arbeitstage miteinander verrechnen,
also 1. AT 2010 - 1. AT 2009 as Testspalte.
So schauts aus:
1385
Am besten und übersichtlichsten wäre es glaube ich, wenn ich die jeweiligen Arbeitstage in eine Zeile bringe
--> Also aus 2 Zeilen mach eine. Sprich: Zeile 1 und 2 werden nebeneinander dargestellt. Zeile 3+4, 5+6 etc.
Halt immer dann, wenn die Arbeitstage gleich sind?
Wie mache ich dass denn?
____________________________________
Hat sich erledigt. Ich habe jetzt einfach eine Abfrage für 2009 und eine für 2010 geschrieben und diese miteinander verknüpft. Das ich da nicht gleich drauf gekommen bin. So gings ganz schnell und einfach
LG
DerGulm
Es gibt in Access Pivot Tabellen, aber ob die helfen, weiß ich hier nicht.
Alternative baust du einen Bericht, der in einer Extra Spalte die Werte mit VBA Dynamisch errechnet.
Oder versuchs irgendwie als Subquery sowas wie Select *,(SELECT sum(bla) as bvlll FROM tabelle WHERE x = y)
Danke, leider hast du überall Mikes-PCHsilfe.de geschrieben (s zuviel)
Upps, Sorry, das passiert, wenn man seine Links nicht nocheinmal kontrolliert. *g*
Änder ich sofort um, sobald ich zu Hause bin.
Ist mir ja richtig peinlich *g*
Wie gesagt, ICh habe einfach die Abfragen gesplittet und dann miteinander verknüpft. So ging das auch recht einfach.
Aber das mit den Subquerys hört sich recht interessant an. Das probier ich gleich mal aus.
Vielen Dank und Sorry für den Rechtschreibfehler. Da war meine Hand schneller als mein Auge.
LG DerGULM
Mikes-PCHilfe
26.03.2010, 20:40
Ich hab zwar auch einen Kunden für den ich in Access programmiere, aber ich mach das zu 95% über VBA.
Und ich weiß, dass ich schon manche Tage echt verzweifelt bin, weil sich Access an fast keinen Standard hält...
Aber evtl. genügen dir ja meine Tipps, damit du auf den richtigen Weg kommst.
Deine Tipps reichen meistens ;-)
MS sollte sich wegen Access schämen ;-)
So ein verhunztes Programm hab ich selten gesehen.
Aber ich hab es nach 5 tagen endlich geschafft :-( (für etwas, was max 3 stunden dauern dürfte)
verlinkungen habe ich nun korrigiert.
Vielen dank nochmal.
--> DerGulm
Mikes-PCHilfe
27.03.2010, 20:33
Ja, das kenne ich, wenn man dann rausgefunden hat wie es geht, sagt man sich auch, ok, war ne Arbeit von 1-2 Stunden :)
Danke für die Info
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.