MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 14.12.2017, 09:37   #1
Heritus
Neuer Benutzer
Neuer Benutzer
Standard MySQL - Jahresabschluss Bestand (vermtl. Anfängerfrage)

Hallo ihr,
so kurz vor Weihnachten noch eine kleine Denksportaufgabe (Alle folgenden Angaben sind exemplarisch und entsprechen nicht der tatsächlichen Relaität. Sie sind auf ein Minimum heruntergebrochen, um das Problem zu lösen!):

Eine Wäscherei möchte gern wissen, wie die Belastung des Jahres war. Dazu hat sie eine MySQL Datenbank in der es eine einzige Tabelle (Bestand) gibt.
Diese Tabelle hat exakt 3 Felder, nämlich Eingang (datumsfeld), Ausgang (datumsfeld) und Artikel (Textfeld).
Wenn ein Artikel angeliefert wird, dann wird der Gegenstand erfasst, in der Form, dass in dem Eingangsfeld das jeweilige Datum eingetragen an dem Der Gegenstand eingetroffen ist. Im Feld Artikel wird eingetragen, um was es sich handelt z.B. Kleid, Wintermantel, Teppich etc.
Wenn die Reinigung erfolgt ist und der Artikel wieder abgeholt wurde, dann wird im Ausgangsfeld das Ausgangsdatum eingetragen.

Die Wäscherei möchte nun am Jahresende wissen, wie viel Artikel sie in den jeweiligen Monaten des Jahres hatte.
Also wie viel Kleider, Wintermäntel und Teppiche waren im Januar, Februar, März... etc. in der Wäscherei.

Leider scheitere ich an dieser Aufgabe, da es nicht ausreicht das Eingangsdatum zu überprüfen, denn wenn ein Teppich im Januar angeliefert wurde und 3 Monate braucht, um gereinigt zu werden, dann war der im Januar, Februar und März im Bestand. Das bedeutet Januar, Wintermantel 1...Februar, Wintermantel, 1 .....März, Wintermantel, 1

Ich hoffe, die Aufgabe verständlich dargestellt zu haben. Fehlende Primärschlüssel etc. bitte selber ergänzen. Die sollen aber für die zu erstellende Syntax unwichtig sein, denke ich.

Frohe Weihnachen euch allen
Heritus ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.12.2017, 13:46   #2
hcscherzer
MOF Guru
MOF Guru
Standard

Alle, die im aktuellen Monat (oder früher) eingegangen sind und
noch nicht oder später rausgegangen sind.
Code:

select *
from deine_tabelle
where year(eingang) <= year(current_timestamp) 
  and month(eingang) <= month(current_timestamp)
  and (ausgang is null 
   or year(ausgang) >= year(current_timestamp)
   and month(ausgang) >= month(current_timestamp)
      )
Ob Du das Jahr mitnehmen musst, hängt davon ab, ob alle Daten aus einem Jahr stammen oder nicht.

Jetzt nimmst Du wieder die Kalendertabelle aus dem anderen Thread.
Verdichtest sie auf jeweils ein Datum pro Monat aus dem fraglichen Jahr und verknüpfst sie mit der hier (wobei statt des current_timestamp jeweils das Datum aus der Kalendertabelle steht).
Dann kannst Du nach Monat und nach den Artikeln gruppieren und diese zählen.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.12.2017, 11:11   #3
Heritus
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,

das ist ein sehr schöner Ansatz, leider komme ich damit nicht zu dem Ergebniss, welches ich brauche.
Vielleicht versuche ich das noch besser darzustellen.

Angenommen eine Hose erreicht die Wäscherei im Januar und wird im März ausgegben und eine andere Hose erreicht die Wäscherei im Februar und wird im April ausgegeben. Dann sollte das Ergebnis, wenn man den bereich von januar - april abfragt, so aussehen:

Monat Bestand Artikel
1_______1______Hose
2_______2______Hose
3_______2______Hose
4_______1______Hose

Code:

SELECT Month(Eingang) as Bestandsmonat, Count(Month(Eingang)) as Bestand, Artikel
FROM Meine_Tabelle
GROUP BY Bestandsmonat, Bestand, Artikel
und jetzt kommt die WHERE Klausel, die alles auflöst
Aber wie?

Geändert von Heritus (15.12.2017 um 11:18 Uhr). Grund: Formatierung fehlerhaft
Heritus ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.12.2017, 07:53   #4
fraeser
MOF Meister
MOF Meister
Standard

Wenn im März die erste Hose ausgegeben wird, müsste der Bestand dann doch gleich 1 sein; im April entsprechend gleich 0...
Oder?

__________________

Gruß, Jan

Zitat:

Programmieren und Microsoftail: "Gestern stand ich noch am Abgrund.....heute bin ich einen Schritt weiter....!"

fraeser ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.12.2017, 10:27   #5
hcscherzer
MOF Guru
MOF Guru
Standard

@Jan: "im März ausgegeben" ... das bedeutet, im März war sie noch da und wird folgerichtig mitgezählt.

Zitat: von Heritus

leider komme ich damit nicht zu dem Ergebniss

Ja, das schrieb ich doch, das Codebeispiel ist nur der erste Schritt.
Das solltest nicht nur "schön" finden sondern durchdenken und darauf Deinen weiteren Code aufbauen. Ich hab es ja ungefähr beschrieben ... oder erwartest Du etwa gebratene Hühner?

In Deinem Code ist es überflüssig nach der Anzahl (Bestand) zu gruppieren.

Was ist denn mit Sachen, die im Dezember eingeliefert werden?
damit die in den Anfangsbestand für Januar mit reinkommen, musst Du das um das Jahr erweitern, denke ich.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.12.2017, 10:48   #6
ebs17
MOF Guru
MOF Guru
Standard

Ich würde eine Kalendertabelle einsetzen mit den Feldern Kalendertag, Monat, Jahr.

Mit der Verknüpfung Kalendertag zwischen Artikeleingang und Artikelausgang erhältst Du die nötige Vielfalt, um nach Monat, Artikeln usw. gewünscht zu gruppieren und die gewünschten Anzahlen zu ermitteln. Damit beherrscht man dann auch die Jahresübergänge.

Zitat:

Jahresabschluss Bestand

Der Bestand zu einem beliebigen Datum ist damit auch ermittelbar.

(Denksport beendet, der Rest ist pure Umsetzung)

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende

Geändert von ebs17 (16.12.2017 um 10:52 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.12.2017, 07:57   #7
Heritus
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Konfus

Zitat:

Ja, das schrieb ich doch, das Codebeispiel ist nur der erste Schritt.
Das solltest nicht nur "schön" finden sondern durchdenken und darauf Deinen weiteren Code aufbauen.

Wenn ich den Code richtig verstanden habe, dann muss ich also wenn der Abfragebereich 8 Monate umfasst, 8 mal die Abfrage ausführen und immer den Current_Time_Stamp verändern.
Ich wollte doch aber ursprünglich einen Abfrage-Datums-Bereich vorher definieren.
Ich befürchte, das übersteigt meine Fähigkeiten.
Heritus ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.12.2017, 08:40   #8
hcscherzer
MOF Guru
MOF Guru
Standard

Wenn Du 8 Monate untersuchen willst, musst Du eine Hilfstabelle nehmen, mit 8 Datensätzen und in jedem Datensatz steht ein Datum aus genau einem Monat.
Diese Tabelle wird mit meinem Beispiel gejoint wobei statt des currenttimestamp Bezug genommen wird auf dieses (acht mal) dazugejointe Datum aus der Hilfstabelle.

Zitat:

Ich wollte doch aber ursprünglich einen Abfrage-Datums-Bereich vorher definieren.

Das machst Du, indem die Hilfstabelle den insgesamt möglichen Zeitraum überspannt (wie ich das ursprünglich vorgeschlagen hatte).
Und dann Anfang und Ende des Zeitraums über zusätzliche Parameter definierst.

Zitat:

Ich befürchte, das übersteigt meine Fähigkeiten.

Man wächst mit seinen Aufgaben.

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.

Geändert von hcscherzer (19.12.2017 um 08:43 Uhr).
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.