Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Gruppierung (merkwürdiges Datum Format ist Schuld daran)

Frage Entwicklung Datenbanken

Mitglied: Praktikantin

Praktikantin (Level 1) - Jetzt verbinden

23.04.2007, aktualisiert 24.04.2007, 4962 Aufrufe, 5 Kommentare

Hallo Leute,

ich habe noch ein kleines Problem... Tut mir leid dass ich euch nerve aber mein Praktikum endet diese Woche und keiner zeigt mir etwas Na wenigstens bekomme ich immer Hilfe von euch. Wie gesagt ich arbeite an ein paar wirklich schlecht organisierten Datenbanken. Ich benutze diese Abfrage:

SELECT '20'+Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),3,2) AS Jahr, Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),5,2) AS Monat, AMFLIBX_MBBFRES0.bfc7cd, AMFLIBX_MBDDREP.DDAITX, Sum(AMFLIBX_MBDDREP.ddduva) AS Summevonddduva
FROM (((AMFLIBX_MBF9REP LEFT JOIN AMFLIBX_MBBFREP ON (AMFLIBX_MBF9REP.FEABBJ = AMFLIBX_MBBFREP.CUSNO) AND (AMFLIBX_MBF9REP.FEAENB = AMFLIBX_MBBFREP.COMNO)) INNER JOIN AMFLIBX_MBBFRES0 ON AMFLIBX_MBF9REP.FEKNNB = AMFLIBX_MBBFRES0.BFCANB) INNER JOIN (AMFLIBX_MBDHREP INNER JOIN (AMFLIBX_MBDDREP LEFT JOIN AMFLIBX_ITEMASA ON AMFLIBX_MBDDREP.DDAITX = AMFLIBX_ITEMASA.ITNBR) ON (AMFLIBX_MBDHREP.DHAENB = AMFLIBX_MBDDREP.DDAENB) AND (AMFLIBX_MBDHREP.DHDCCD = AMFLIBX_MBDDREP.DDDCCD) AND (AMFLIBX_MBDHREP.DHCVNB = AMFLIBX_MBDDREP.DDCVNB) AND (AMFLIBX_MBDHREP.DHK4NB = AMFLIBX_MBDDREP.DDK4NB)) ON (AMFLIBX_MBF9REP.FEGGNB = AMFLIBX_MBDHREP.DHGGNB) AND (AMFLIBX_MBF9REP.FEHYNB = AMFLIBX_MBDHREP.DHHYNB) AND (AMFLIBX_MBF9REP.FEABBJ = AMFLIBX_MBDHREP.DHCANB)) LEFT JOIN AMFLIBX_MBDZREP ON AMFLIBX_MBBFREP.TERRN = AMFLIBX_MBDZREP.DZC0CD
GROUP BY '20'+Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),3,2), Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),5,2), AMFLIBX_MBBFRES0.bfc7cd, AMFLIBX_MBDDREP.DDAITX, AMFLIBX_MBF9REP.FEGGNB, AMFLIBX_MBF9REP.FEGHNB, AMFLIBX_MBBFREP.TERRN
HAVING (((AMFLIBX_MBF9REP.FEGHNB)>=1070101 And (AMFLIBX_MBF9REP.FEGHNB)<=1100101) AND ((AMFLIBX_MBBFREP.TERRN)=2))
ORDER BY '20'+Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),3,2), Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),5,2), AMFLIBX_MBBFRES0.bfc7cd, AMFLIBX_MBDDREP.DDAITX;

Nach dieser Abfrage bekomme ich dann die Folgende Tabelle: Jahr, Monat, Kundenklasse (bfc7cd), Arikelnummer (DDAITX) und die verkaufszahlen (ddduva als Summe). Das Datum ist in dieser tabelle FEGHNB und hat diese blöde Form "1070101". Damit ich das Jahr und die Monate bekomme habe ich einfach (wie ihr sehen könnt) die mid () Funktion benutzt. Mein Problem ist aber dass ich nicht die Verkaufszahlen von jedem einzelnen Tag brauche sondern die jedes Monats Summiert. Ich habe schon versucht die FEGHNB auszuschiessen (in der Entwurfsansicht) aber dann hat Access für gut 1 Stunde die Daten ausgesucht (und war immer noch nicht fertig) und das dauert einfach viel zu lange... Hat vielleicht jemmand eine idee?

Hier sind ein paar Bilder:

c486a2e2b3c4cf394c545005e150fee7-zwischenablage02 - Klicke auf das Bild, um es zu vergrößern
76edaba34a64e2f94c4c70d9800580f1-zwischenablage01 - Klicke auf das Bild, um es zu vergrößern

Wie ihr sieht sind die Artikel doppelt aufgelistet weil sie auch den Tag berücksichtigen:
c0a3b0fe2af1e857fec9fb5ca384ffda-zwischenablage03 - Klicke auf das Bild, um es zu vergrößern

Wie kann ich nur anhand der 4 ersten Spalten (ohne den Tag) die Daten Gruppieren und dann die Summe für jeden Arikel für jeden Monat bekommen? Und an dem ist dieses blöde Datum schuld... Kann ich es irgendwie hinbekommen? Ich bitte euch um euren Rat und eure Hilfe!!!

Viele Grüße Julia
Mitglied: Biber
23.04.2007 um 18:28 Uhr
Moin Praktikantin,

sagen wir so... außer PraktikantInnen haben Deine momentanen Brötchengeber offensichtlich auch noch niemand an diese Datentabellen herangelassen...

Haben die eine grönlandische Datenbank ins Serbokroatische übersetzen lassen oder bei der Vergabe der Feld- und Tabellennamen nur mit dem Ellenbogen auf die Tastatur gehauen?

Oder kommt das alles aus der bekannten Softwareschmiede von Jim Beam und Johnnie Walker?

Egal, ich würde es versuchen mit zwei Schritten Abstand...und einfach nochmal gucken.

--> Die Auswertung soll gruppiert werden nach (Monat+Jahr von) Datum, Kundengruppe und Artikelnummer

Die GROUP BY-Clause geht aber noch viel weiter.
Da willst Du vielleicht noch SORTieren nach "AMFLIBX_MBF9REP.FEGGNB, AMFLIBX_MBF9REP.FEGHNB, AMFLIBX_MBBFREP.TERRN", aber nicht GROUPieren.

Die GROUP BY-Clause ist drei Felder zu lang (=drei Felder länger als die ORDER BY-Clause.
Und eine Group By UND eine ORDER BY nach den gleichen Kriterien muss auchnicht sein.

Kürze die GROUP-BY, setze statt dem Kriterium "'20' + Mid..(.bla.)' ein schlichtes 'Left( str([AMFLIBX_MBF9REP].[FEGHNB]),5)' ein.
und starte den Krempel noch mal.

Gruss Biber
Bitte warten ..
Mitglied: Praktikantin
23.04.2007 um 18:49 Uhr
Hallo Biber und danke für die schnelle Antwort,

ich habe wirklich sehr viele Probleme mit diesen Datenbanken... Man wird durch den Namen der Datenbanken/Tabellen nicht schlau, es sind einfach zuviele und sehr viele sind überdimensional groß (viele davon sind nicht zu gebrauchen). Weiß auch nicht woher die stammen... Ich werde noch verrückt. Ich werde morgen deinen Tipp Befolgen und ich hoffe es klappt diesmal. Diese merkwürdige Datum Spalte(FEGHNB mit der blöden Form "1070101") kann ich nicht rausnehmen (denke ich). Hat diese irgend einen Einfluss bei der Gruppierung der Tabelle? Vielen Dank für Deine Hilfe nocheinmal!!!!
Bitte warten ..
Mitglied: Biber
23.04.2007 um 19:10 Uhr
Moin Praktikantin,

Du brauchst da nichts rausnehmen und Dich vor allen Dingen nicht verrückt machen lassen durch dieses Blendwerk von kryptischen Feld- und Tabellennamen.
Diese Verwirrspiele haben Methode - einige Unternehmen wie z.B. SAP haben sich mit diesem konsequenten Werfen von solchen undurchschaubaren Nebelgranaten eine marktbeherrschende Position ergaunert. *gg
Ist ja der Sinn derartiger "Datenmodellierung", dass kein Aussenstehender so einen Haufen Mist ohne Hilfe der System-Verkäufer pflegen oder warten kann.

Also, nochmal... zwei Schritte zurücktreten und nochmal draufschauen:

Es kommt ganz genau das Gleiche heraus, ob Du nun ein GROUP BY machst nach
01.
GROUP BY '20'+Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),3,2), Mid(Str([AMFLIBX_MBF9REP].[FEGHNB]),5,2), AMFLIBX_MBBFRES0.bfc7cd, AMFLIBX_MBDDREP.DDAITX 
02.
----> '20' +'07' +'01'.... +kundenart...+ Artikelnr 
03.
--oder nach -- 
04.
GROUP BY LEFT( str( [AMFLIBX_MBF9REP].[FEGHNB]), 5) + ... 
05.
---->'10701' ...+ kundenart ..+ Artikelnummer.
Nur: die Group-by-Clause muss auch mit dem "Artikelnr" zu Ende sein.

Ob Du das Datum als Monat und Jahr mit anzeigst oder nicht, das hat mit der Anzahl der Ergebnissätze nichts zu tun.

Und wenn das Ganze dann morgen immer noch so stinkelangsam sein sollte, dann ersetzen wir mal die merkwürdigen INNER JOINS durch normale WHERE-Bedingungen.
Dann könnte der Klamauk vielleicht sogar lesbar werden. Und etwas performanter.

Gruss
Biber
Bitte warten ..
Mitglied: Praktikantin
23.04.2007 um 20:38 Uhr
Hallo Biber,

vielen dank noch einmal für die Hilfe und die Erklärung. Ich arbeite ja das erste mal in einer Firma und habe mich schon gefragt warun die solche blöden Namen verwenden... Na ja, jetzt weiß ich es wenigstens. Wie gesagt ich versuche es morgen und ich denke es wird klappen.
Vielen lieben dank!

Viele Grüße
Julia
Bitte warten ..
Mitglied: Praktikantin
24.04.2007 um 09:34 Uhr
Guten morgen Biber,

es hat geklappt!!!! Vielen dank für Deine Hilfe. Habe auch den Left.... Befehl in SQL ausprobiert aber das hat der PC nicht verkraftet (zu wenig Speicher drauf (obwohl 39,6 GB frei waren) ). Ich habe auch alle outer joins mit inner Joins ersetzt. Wie denkst konnte ich die Beziehungen erstellen? Ich habe einfach improvisiert und einfach die Beziehungen die schon in Cognos erstellt worden sind übernohmen... Wer hätte sonst Zeit mir all das zu zeigen und die Beziehungen zu erklären? Die hatten damals in Cognos outer Joins erstell, also wußte ich nicht ob es mit den inner Joins das gleiche Ergebnis rauskommt. Aber ich habe die gleichen Zahlen bekommen. Danke für Deine Hilfe nocheinmal! Du hast mir wirklich mehr als geholfen!!!!

Viele Grüße
Julia
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Google Android
GMail: Gruppierung von Mails (2)

Frage von honeybee zum Thema Google Android ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Windows 10
gelöst Windows 10 - Datum und Zeitfehler bei Update (3)

Frage von swisstom zum Thema Windows 10 ...

Windows Userverwaltung
gelöst Datum einer Gruppenmitgliedschaft (1)

Frage von slansky zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...