Berechnungsfrage

decision

Well-known member
ID: 30862
L
21 April 2006
309
5
Hallo,

ich versuche mich gerade an einer Berechnung. Da ich noch Neuling in diesem Bereich bin, fehlt mir eine Eingebung wie ich es lösen könnte. Folgendes:

Ich habe eine Tabelle mit mehreren Einträgen (id, firmaid, jahr, umsatz, …). Nun möchte ich das Umsatzwachstum, immer der letzten Jahre ausrechnen (z.B. Wachstum Umsatz von 2011 zu 2012 für firmaid=1). Könnt Ihr mit dabei helfen wie ich das Problem lösen könnte?

Die Tabelle sieht in etwa so aus:

id, firmaid, jahr, umsatz
1, 1, 2009, 10
2, 1, 2011, 13
3, 1, 2010, 12
4, 2, 2011, 28
5, 1, 2012, 14
 
Du musst einen Auto-JOIN machen. Verknüpfe die Tabelle mit sich selbst und hierbei sagt du, dass du das Vorjahr zuordnen willst. Dann kannst du MySQL subtrahieren lassen und kriegst deine Umsatzsteigerung.
 
Versuch mal sowas:


Code:
SELECT A.FIRMAID , B.JAHR , (B.UMSATZ - A.UMSATZ) AS UMSATZSTEIGERUNG

FROM  tabelle A INNER JOIN tabelle B
ON A.FIRMAID = B.FIRMAID
AND A.JAHR = B.JAHR - 1

WHERE A.FIRMAID = 1
 
Danke.
Ich hatte nur vergessen zu schreiben, dass ich bereits alle vorhandenen Jahre zu der Firma ausgebe. Der Code sieht so aus:

Code:
<?php
$sql=mysql_query("SELECT jahr, umsatz FROM tabelle LEFT JOIN .....");
while ($row=mysql_fetch_array($sql))
{
$jahr=$row['jahr'];
$umsatz=$row['umsatz'];

echo"Geschäftsjahr ".$jahr." mit ".$umsatz."
";?>
<?php } ?>

Jetzt wollte ich in dieser “Schleife” die Berechnung durchführen. Hättest du da einen Tipp für mich wie ich das Umsatzwachstum einer Firma, bezogen auf das Vorjahr ausrechnen kann?
 
Ich verknüpfe nur 2 Tabellen, in der einen stehen die Daten wie Umsatz und in der anderen die Informationen zu der Firma, bezogen auf die firmaid.
 
dann versuch mal:

Code:
SELECT A.FIRMAID , B.JAHR , B.UMSATZ , 
(B.UMSATZ - A.UMSATZ) AS UMSATZSTEIGERUNG, 
(Deine weiteren benötigten Spalten)

FROM  tabelle A LEFT JOIN tabelle B
ON A.FIRMAID = B.FIRMAID
AND A.JAHR = B.JAHR - 1

LEFT JOIN ... (Deine weitere Tabelle)

für das erste Jahr ist die Umsatzsteigerung dann <NULL>
 
Danke. Das wäre dann eine andere, weitere SQL-Abfrage.
Lässt sich die Umsatzsteiergung auch, ausgehend von meiner Abfrage, berechnen? Ohne eine zusätzliche SQL-Abfrage?
Momentan erhalte ich als Ausgabe:

Jahr 2012 mit Umsatz, Währung, etc,
Jahr 2011 mit Umsatz, Währung, etc,
Jahr 2010 mit Umsatz, Währung, etc,
...
 
Danke. Das wäre dann eine andere, weitere SQL-Abfrage.
Lässt sich die Umsatzsteiergung auch, ausgehend von meiner Abfrage, berechnen? Ohne eine zusätzliche SQL-Abfrage?
Momentan erhalte ich als Ausgabe:

Jahr 2012 mit Umsatz, Währung, etc,
Jahr 2011 mit Umsatz, Währung, etc,
Jahr 2010 mit Umsatz, Währung, etc,
...
Da Du es ja absteigend sortiert hast, wird es schwierig, die Umsatzsteigerung in Deine momentane Schleife einzubauen. Was spricht denn dagegen, Dein SQL gegen das von transversalis auszutauschen? Dann müsstest Du an der Schleife wenig ändern, aber hättest die benötigten Werte.

Ansonsten bliebe nur, dass Du die Daten aus der DB erstmal ausliest, in einer neuen Schleife aufbereitest (also die Steigerung berechnest) und dann ausgibst.
 
Danke, habe es mit einer Mischung aus den Antworten hinbekommen.
Man muss eben nur einmal darüber reden, dann klappt es :D