Auswertung wie realisieren?

ZuTroll

Grünschnabel
Hi ich habe ein Problem und bekomme es nicht gelöst und zwar:

ich habe eine Tabelle mit verschiedenen werten wie Besitzer, Dateiname,Dateigröße

Nun will ich den Inhalt überprüfen wie oft der Besitzer der Datei wechselt und die Anzahl dann mal der Dateigröße nehmen. und dann muss er die nächste datei prüfen und wieder die Pürfung vornehmen ist " Besitzer == Besitzer +1 und Dateiname==Dateiname+1 wenn ja tue nichts ausser Besitzer+1 und prüfe erneut, ist Besitzer != Besitzer +1 und Dateiname==Dateiname+1 dann zähle die Dateigröße und soweiter.



Hier ein Beispiel:
Besitzer="Hase,Pferd,Ratte,Hund,Hase"
Filename="Möhre,Möhre,Katze,Mehl,Gummi"
Dateigröße="1,1,3,4"

Dann soll es mir ausgeben:
1 wechsel brauchte 1x Dateigröße

Da Hase = Möhre
und Pferd = Möhre

also ein Besitzerwechsel stattgefunden hat

Weiß mir jemand Rat ich verzweifle ;)


Grüße
 
Zuletzt bearbeitet:
Hallo ZuTroll,

poste bitte dein verwendetes RDBMS, also MySQL, Access, SQL Server, Oracle usw.
Ansonsten wäre die genaue Tabellenstruktur hilfreich.

Dein Problem lässt sich möglicherweise am schnellsten mit PHP o.ä. lösen.
Ich zeig dir mal 2 verschiedene SQL-Statements, die du anpassen und fürs erste mal ausprobieren kannst:

SQL:
select filename,
       COUNT(besitzer)              as anzahl_wechsel,
       COUNT(besitzer)*dateigroesse as gesamtgroesse
  from besitzerwechsel
 group by filename

Bei diesem Statement bekommst du die Anzahl der Einträge pro Besitzer-"Wechsel" mit.
Auch solche, die eigentlich den gleichen Besitzer und die gleiche Datei betreffen.
Wenn du nur insgesamt die Anzahl der verschiedenen Besitzer wissen möchtest, also egal, wie oft "Möhre" z.B. von Hase zu Pferd und umgekehrt gewechselt ist, dann könntest dir folgendes Statement nützen:

SQL:
select filename,
       COUNT(distinct besitzer)              as anzahl_wechsel,
       COUNT(distinct besitzer)*dateigroesse as gesamtgroesse
  from besitzerwechsel
 group by filename

Ansonsten: Du schreibst man solle die Anzahl gefundener Einträge mit der Dateigrösse multiplizieren.
Aber die Dateigrösse hast du bei jedem Eintrag/Datensatz mit dabei, oder?
Daher müsste man sie eigentlich aufaddieren und nicht einfach mit der Anzahl multiplizieren, oder?

Ansonsten, wenn die Dateigrösse nichts mit dem eigentlichen Besitzerwechsel zu tun hat, solltest du die Besitzerwechsel und die eigentlichen Dateien trennen in verschiedenen Tabellen, sonst hast du nicht einmal die 2.Normalform.

Dein ursprüngliches Problem mit den aufeinanderfolgenden Einträgen kannst du wohl nur mithilfe von Window-Funktionen, dem Einsatz von Subquerys oder evtl. Stored Procedures oder dem sinnvollen Einsatz von PHP o.ä. lösen. Daher wäre dein verwendetes Datenbank-System hilfreich :)

Markus
 
hi ich nutze MySql 5,

die ABfrage oben hat mir schon sehr geholfen, ich denke damit kann ich das problem lösen ;), ich teste es mal durch .
Normalform ist nich so wichtig die Tabelle dient der reinen auswertung also keien großen Transaktionen ausser mal ne Multiplikation und Summen bildung

Vielen Dank

Edit:

SELECT * , sum( gesamtgroesse ) AS Summe
FROM wert
GROUP BY filename

wenn ich ne summe haben will
anzahl_wechsel gesamtgroesse summe
1 30226 30226
1 19888 19888

jedoch will ich die summe nur einmal als gesamt haben wie bekomm ich das hin?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück