Einzelnen Beitrag anzeigen

d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#14

Re: Datenauswertung mit SQL-Befehl?

  Alt 18. Apr 2008, 14:31
Hallo - du bist DER Held!

Ich bin einigermaßen biff was man mit SQL alles machen kann. Ich wollte das doch tatsächlich über Schleifen rausfummeln. Mal abgesehen von der besch... Performance der Schleifenlösung, ist diese SQL Lösung doch viel eleganter!!

Zitat von omata:

SQL-Code:
SELECT a.f_name, COUNT(*) AS anzahl
FROM tbl_daten a
LEFT JOIN tbl_daten b
  ON ( a.f_date = b.f_date + 1
      AND b.f_content = 'W')
WHERE MONTH(a.f_date) = 1
  AND a.f_content = 'W'
  AND b.nameID IS NULL
GROUP BY a.f_name
oder auch...

SQL-Code:
SELECT MONTH(a.f_date) monat, YEAR(a.f_date) jahr, a.f_name, COUNT(*) AS anzahl
FROM tbl_daten a
LEFT JOIN tbl_daten b
  ON ( a.f_date = b.f_date + 1
      AND b.f_content = 'W')
WHERE a.f_content = 'W'
  AND b.nameID IS NULL
GROUP BY a.f_name, MONTH(a.f_date), YEAR(a.f_date)
Das funktioniert tatsächlich (Variante 2 habe ich bis jetzt getestet).
Ich muß jetzt nur noch richtig verstehen, was da eigentlich richtig passiert

Ich bin momentan dabei diese Variante zu erweitern. Um es nicht noch weiter zu verkomplizieren, hatte ich bis jetzt noch eine weitere Bedingung für das Zyklenzählen "verschwiegen".
Eine weitere Bedingung für das Erkennen eines cycles ist dieses "C" in der Tabelle. Wenn nämlich zwischen zwei "W" ein oder auch mehrere hintereinanderfolgende "F" stehen, dann soll der Zyklus als zusammengehörig erkannt werden.
Also z.b.
"W"
"W"
"C"
"W"
"W"
"F"
"F"
"F"
"W"
"W"
wären dann nicht drei Zyklen sondern nur zwei.
Das "C" kann auch ein "A" oder "S" oder "K" sein. Sowie aber zwischen zwei "W" ein oder mehrere "F" stehen, zählt es als ein Zyklus.
Ich versuche das jetzt irgendwie noch zu integrieren. Wenn du noch Lust hast, wäre ich über einen weiteren Tip natürlich auch nicht böse

Dirk
  Mit Zitat antworten Zitat