php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-03-2013, 12:10
mr_apollon
 Registrierter Benutzer
Links : Onlinestatus : mr_apollon ist offline
Registriert seit: May 2009
Beiträge: 38
mr_apollon befindet sich auf einem aufstrebenden Ast
Angry Schnittmenge der Jahre

Hallo Leute,

ich stehe vor einem unlösbarem Rätsel, an dem ich mich schon seit Wochen vergeblich versuche.

Für eine Datenanalyse bekommen wir vom Buchhalter alle Rechnungen als csv und lesen diese in eine MYSQL-Datenbank ein.
Jetzt wollen wir die tatsächlichen Buchungen/ Geschäftsvorgänge pro Kunden- und Rechnungsnummer rausfinden.

Das Buchhaltungssystem gibt entweder die offenen Buchungen pro Wirtschaftsjahr plus die neuen Buchung jedentisch Jahr für Jahr weiter, oder
ab einem unbekannten Zeitpunkt werden die Buchungen des Vorjahres nicht mehr aufgeführt und gelten somit als automatisch weitergegeben.


Beispiel:

Jahr |Geschäftspartner| Renr | Betrag |
--- -+------------ ---+------+--------|
2009 | 10000 | 123 | 100.00 | neue Buchung
2009 | 10000 | 123 | 100.00 | neue Buchung
2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
2010 | 10000 | 123 | 100.00 | neue Buchung
2011 | 10000 | 123 | 100.00 | neue Buchung, da nicht alle Werte aus 2010 weitergegeben werden
2012 | 10000 | 123 | 100.00 | Weitergabe aus 2011
2012 | 10000 | 123 | -30.00 | neue Buchung
2013 | 10000 | 123 | 100.00 | Weitergabe aus 2012
2013 | 10000 | 123 | -30.00 | Weitergabe aus 2012
2013 | 10000 | 123 | -30.00 | neue Buchung


Mit reinem Gruppieren oder Distinct komme ich nicht weiter. Eine Nachverarbeitung per PHP kommt auch nicht in Frage,
da ich die Ausgabe zum weiterverarbeiten in MYSQL brauche.Ich brauche so eine Art Schnittmenge von Jahr zu Jahr

Das müsste rauskommen

2009 | 10000 | 123 | 100.00
2009 | 10000 | 123 | 100.00
2010 | 10000 | 123 | 100.00
2011 | 10000 | 123 | 100.00
2012 | 10000 | 123 | -30.00
2013 | 10000 | 123 | -30.00

Ich hoffe jemand hat eine Idee.

Viele Grüße
Apollon
Mit Zitat antworten
  #2 (permalink)  
Alt 15-03-2013, 13:38
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

wieso geht das nicht mit GROUP BY und WHERE??

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #3 (permalink)  
Alt 15-03-2013, 13:57
mr_apollon
 Registrierter Benutzer
Links : Onlinestatus : mr_apollon ist offline
Registriert seit: May 2009
Beiträge: 38
mr_apollon befindet sich auf einem aufstrebenden Ast
Standard

Weil Einträge im Jahr mal beachtet werden und mal nicht (siehe Beispiel jahr 2010 oben, der 3 Eintrag würde verloren gehen) ist es m.E. so einfach nicht möglich. Meine Idee wäre, wobei ich nicht weiss wie man das umsetzen kann, die Einträge der Jahre gegeneinander abzugleichen...

Oder ich sehe den Wald vor lauter Bäumen nicht...
Mit Zitat antworten
  #4 (permalink)  
Alt 16-03-2013, 11:31
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von mr_apollon Beitrag anzeigen
Weil Einträge im Jahr mal beachtet werden und mal nicht (siehe Beispiel jahr 2010 oben, der 3 Eintrag würde verloren gehen) ist es m.E. so einfach nicht möglich.
Ich kann leider weder aus diesem Post noch aus dem Ausgangspost erkennen, nach welchen Regeln du deine Datensätze berechnet haben willst. Das kann auch an mir liegen.

Wäre es dir möglich, dein Problem mehr strukturiert und verständlicher darzulegen?

Zitat:
Meine Idee wäre, wobei ich nicht weiss wie man das umsetzen kann, die Einträge der Jahre gegeneinander abzugleichen. ...
MySQL lässt sich um benutzerdefinierte Funktionen erweitern, falls dir seine eingebauten Fähigkeiten nicht ausreichen.
Mit Zitat antworten
  #5 (permalink)  
Alt 17-03-2013, 14:01
mr_apollon
 Registrierter Benutzer
Links : Onlinestatus : mr_apollon ist offline
Registriert seit: May 2009
Beiträge: 38
mr_apollon befindet sich auf einem aufstrebenden Ast
Standard

Hallo fireweasel,

erstmal danke das Du Dir die Sache anschaust, ich habe eine Blockade im Kopf und komme nicht weiter. Sicher habe ich es etwas unverständlich beschrieben - ich versuche es mal auf deutsch

Es werden alle Eingangs- und Ausgangsrechnungen sowie die aus- und eingehenden Zahlungen extern erfasst. Das Programm gibt als einzige Exportmöglichkeit eine CSV über die offenen Rechnungen aus. Diese CSV wird 1:1 in Mysql importiert.

Im Normalfall kann jahresunabhängig anhand der Rechnungsnummer eine Summe des Betrages gebildet werden bzw. man kann zur Rechnung erfolgten Vorgänge auflisten.

Der Haken:

Wurde ein Jahr abgeschlossen und nachträglich in einem Vorjahr ein Vorgang nacherfasst, werden die selben Buchungen jährlich vorgetragen bis man im aktuellen Jahr der Bearbeitung ist und in der CSV wird ein und der selbe Vorgang pro Jahr wieder neu aufgeführt. Einfaches gruppieren und sortieren würde hier Doppelte Ergebnisse und falsche Zahlen liefern.

Beispiel: Es ist 2011, und es werden Buchung für 2009 nacherfasst, dann werden die neuen Einträge von 2009 ebenfalls identisch in 2010 ausgegeben. In 2011, 2012 werden diese nicht mehr ausgegeben, obwohl die Rechnungen unter Umständen nach wie vor offen sind.

2009 | 10000 | 123 | 100.00 | neue Buchung
2009 | 10000 | 123 | 100.00 | neue Buchung
2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
2010 | 10000 | 123 | 100.00 | Weitergabe von 2009
2010 | 10000 | 123 | 100.00 | neue Buchung
2011 | 10000 | 123 | 100.00 | neue Buchung, da nicht alle Werte aus 2010 weitergegeben werden

Leider wird in der Exportdatei keine Markierung/ Buchungsdatum für die nachgetragenen Werte ausgegeben, nach denen man aussortieren kann. Das ist auch das, was es für mich so schwierig macht.

Ich versuche mal mein Idee verständlich zu erklären:

Begriffserklärung:
- Ereignisliste = SQL-Ausgabe
- Prüfliste (mir ist zur Erklärung nichts besseres eingefallen) ist die Anzahl der Buchungssätze die gegengeprüft werden müssen

- alle Datensätze werden entsprechend des Jahres aufsteigend geordnet
- die ersten Buchungssätze pro Geschäftspartner/ Rechnungsnummer kommen in die Ergebnisliste und die "Prüfliste"
- in den Folgejahren werden Jahr für Jahr die Datensätze mit denen der Vorjahre geprüft. Dublette werden aussortiert und neue kommen in die Ergebnisliste und zusätzlich zur "Prüfliste" hinzu
- im nächsten Jahr müssen die Buchungen mit denen der Prüfliste wieder übereinstimmen usw.
=> Jeder Datensatz der Prüfliste darf nur eine Dublette pro Jahr haben, weitere Dubletten sind auch neue Buchungen die in die Ereignisliste und in die "Prüfliste" müssen.
=> sollten nicht alle Buchungen (oder keine) der Prüfliste im Jah vorhanden sein, sind die zukünftigen Buchungen keine nachträglichen sondern neue Buchung. Die "Prüfliste" für die Kunden und Rechnungsnummer wird zurückgesetzt. Die neuen Buchungen müssen dann wiederum in die Ergebnisliste und in die "Prüfliste" mit denen dann wieder Jahr für Jahr das gleiche Spiel beginnt

Ist meine Beschreibung verständlich und hast Du eine Umsetzungsidee, vielleicht auch eine einfachere Lösung? Bin am Verzweifeln, vielleicht denke ich auch nur zu kompliziert...

Besten Dank
Apollon
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
nicht gemeinsame Schnittmenge aus drei Tabellen simond SQL / Datenbanken 2 04-08-2011 12:53
Zwei Jahre der PHP Hacker … unset User pages 1 16-12-2010 09:19
Schnittmenge zweier Tabellen (oder ähnliches) soezkan SQL / Datenbanken 1 25-07-2007 20:24
counter der auch jahre ausgibt. Silver Projekthilfe 18 31-08-2004 16:47
array schnittmenge fragen PHP Developer Forum 10 17-04-2004 15:40

Themen-Optionen
Thema bewerten
Thema bewerten:

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 hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:27 Uhr.