phpbar.de logo

Mailinglisten-Archive

AW: Datensätze filtern, zusammensetzen und berechnen

AW: Datensätze filtern, zusammensetzen und berechnen

Tim Hildebrandt TConnect at gmx.net
Fre Okt 8 10:46:04 CEST 2004


Hallo Liste,
> Hallo Matthias,

> 
> <QUERY>
> SELECT sid, bkid, preis, SUM(preis) AS sum_preis, COUNT(*) AS 
> num_records FROM gruppierung 
> GROUP BY sid, bkid
> </QUERY>
> 

> <OUTPUT>
> sid  bkid  preis  sum_preis  num_records  
> 1    1     20     30         2 
> 1    2     20     20         1 
> 1    3     45     45         1 
> 2    2     45     90         2 
> 2    5     12     12         1 
> 3    3     5      5          1 
> </OUTPUT>


Wenn wirklich NUR die identischen sid = bkid benötigt werden, dann geht das
hier auch. Habs gerade getestet.
SELECT sid, bkid, preis, SUM(preis) AS sum_preis, COUNT(*) AS 
num_records FROM gruppierung WHERE sid = bkid
GROUP BY sid
In diesem Falle reicht eine Gruppierung nach sid aus, da sid und bkid
sowieso gleich sind.



Matthias wrote:
> Ich möchte, wenn BKID und SID übereinstimmt den Preis 
> summieren. Sollte jetzt aber nur BKID und SID unterschiedlich 
> sein, dann muss der Preis ganz normal dort stehen.

Ich hatte in einer ersten Mail bereits vermutet, dass es entweder nur nach
meiner ersten Variante funktioniert, wenn sichergestellt werden kann, dass
es immer jeweils nur eine Zeile mit sid != bkid gibt, dafür aber mehrere
doppelte mit sid = bkid. In diesem - nennen wir es mal homogenen - Fall wird
eine Liste ausgegeben, bei denen alle Zeilen mit sid != bkid natürlich
trotzdem summiert werden, da sie aber je nur einmal vorkommen, ist die Summe
identisch mit dem Preis. Nur Zeilen mit sid = bkid werden entsprechend
korrekt summiert (siehe oben unter <OUTPUT>). Einziges Problem: Wenn die
Anzahl der Zeilen mit sid != bkid > 1 ist, summieren sich auch hier die
Preise. Dafür hätte ich dann keine Lösung im Kopf...

Grüße Tim


PS an Norbert: War das gewollt, dass ich Deine letzte Mail per PM bekommen
habe?

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive