SUM() Verständnissproblem

SUM() Verständnissproblem

am 15.12.2005 12:11:45 von Robert Meyer

Hallo NG,

ich habe folgende Situation:

Tabelle members:
+-------+--------------------------+------+-----+---------+- ------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+- ------+
| mgnr | int(3) unsigned zerofill | | PRI | 000 | |
| vn | varchar(30) | | | | |
| nn | varchar(30) | | | | |
| an | varchar(4) | | | | |
+-------+--------------------------+------+-----+---------+- ------+


Tabelle memclub:
+----------+--------------------------+------+-----+-------- -+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------------------+------+-----+-------- -+-------+
| mgnr | int(3) unsigned zerofill | | PRI | 000 | |
| dbu_edv | int(5) unsigned | YES | | NULL | |
| dbu_pass | int(6) unsigned | YES | | NULL | |
| ein_dat | date | YES | | NULL | |
| aus_dat | date | YES | | NULL | |
| status | int(1) unsigned | | | 0 | |
| dbu | varchar(20) | YES | | NULL | |
| club | int(2) unsigned zerofill | YES | | 00 | |
| amt | int(6) unsigned zerofill | YES | | NULL | |
+----------+--------------------------+------+-----+-------- -+-------+


und nun folgenden Select:

SELECT members.mgnr, CONCAT(nn, ' ', vn) AS Name, IF(status = 0, "Passiv",
"Aktiv") AS Status, IF(status = 0, '7,20', '17,20') AS skvs FROM members,
memclub WHERE members.mgnr = memclub.mgnr AND status < 2 ORDER BY status;


Mein Problem besteht nun darin, dass ich nicht weiss, wie ich hier die
Summe von skvs bekomme.
Meine Idee war folgendes:

SELECT members.mgnr, CONCAT(nn, ' ', vn) AS Name, IF(status = 0, "Passiv",
"Aktiv") AS Status, IF(status = 0, '7,20', '17,20') AS skvs, SUM(skvs)
FROM members, memclub WHERE members.mgnr = memclub.mgnr AND status < 2
GROUP BY Name ORDER BY status;

damit bekomme ich aber dann folgende Fehlermeldung:
ERROR 1054: Unknown column 'skvs' in 'field list'

Wie bekomme ich nun die Summe von skvs?

Danke im voraus...
greets
Robert

Re: SUM() Verständnissproblem

am 15.12.2005 13:48:13 von Oliver Hirschi

> Mein Problem besteht nun darin, dass ich nicht weiss, wie ich hier die
> Summe von skvs bekomme.
> Meine Idee war folgendes:
>
> SELECT members.mgnr, CONCAT(nn, ' ', vn) AS Name, IF(status = 0,
"Passiv",
> "Aktiv") AS Status, IF(status = 0, '7,20', '17,20') AS skvs,
SUM(skvs)
> FROM members, memclub WHERE members.mgnr = memclub.mgnr AND status < 2
> GROUP BY Name ORDER BY status;

SELECT members.mgnr,
CONCAT(nn, ' ', vn) AS Name,
IF(status = 0, "Passiv", "Aktiv") AS Status,
IF(status = 0, '7,20', '17,20') AS skvs,
SUM(IF(status = 0, '7,20', '17,20'))
FROM members, memclub WHERE members.mgnr = memclub.mgnr AND status < 2
GROUP BY Name ORDER BY status;

--
Oliver Hirschi
http://www.FamilyHirschi.ch

Re: Re: SUM() Verständnissproblem

am 15.12.2005 21:03:25 von Robert Meyer

Am Thu, 15 Dec 2005 13:48:13 +0100 schrieb Oliver Hirschi:

>> Mein Problem besteht nun darin, dass ich nicht weiss, wie ich hier die
>> Summe von skvs bekomme.
>> Meine Idee war folgendes:
>>
>> SELECT members.mgnr, CONCAT(nn, ' ', vn) AS Name, IF(status = 0,
> "Passiv",
>> "Aktiv") AS Status, IF(status = 0, '7,20', '17,20') AS skvs,
> SUM(skvs)
>> FROM members, memclub WHERE members.mgnr = memclub.mgnr AND status < 2
>> GROUP BY Name ORDER BY status;
>
> SELECT members.mgnr,
> CONCAT(nn, ' ', vn) AS Name,
> IF(status = 0, "Passiv", "Aktiv") AS Status,
> IF(status = 0, '7,20', '17,20') AS skvs,
> SUM(IF(status = 0, '7,20', '17,20'))
> FROM members, memclub WHERE members.mgnr = memclub.mgnr AND status < 2
> GROUP BY Name ORDER BY status;

+------+-------------------------+--------+-------+--------- -----------------------------+
| mgnr | Name | Status | skvs | SUM(IF(status = 0, '7,20', '17,20')) |
+------+-------------------------+--------+-------+--------- -----------------------------+
| 077 | Name 1 | Aktiv | 17,20 | 17 |
| 137 | Name 2 | Aktiv | 17,20 | 17 |
| 097 | Name 3 | Aktiv | 17,20 | 17 |
| 141 | Name 4 | Aktiv | 17,20 | 17 |
| 028 | Name 5 | Aktiv | 17,20 | 17 |
| 092 | Name 6 | Aktiv | 17,20 | 17 |
| 072 | Name 7 | Aktiv | 17,20 | 17 |

Das ist nicht so ganz das was ich brauche...
Ich brauche ne Summenbildung kummuliert...

+------+-------------------------+--------+-------+--------- -----------------------------+
| mgnr | Name | Status | skvs | SUM(IF(status = 0, '7,20', '17,20')) |
+------+-------------------------+--------+-------+--------- -----------------------------+
| 077 | Name 1 | Aktiv | 17,20 | 17,20 |
| 137 | Name 2 | Aktiv | 17,20 | 34,40 |
| 097 | Name 3 | Aktiv | 17,20 | 51,60 |
| 141 | Name 4 | Aktiv | 17,20 | 68,80 |
| 028 | Name 5 | Aktiv | 17,20 | 86,00 |
| 092 | Name 6 | Aktiv | 17,20 | 103,20 |
| 072 | Name 7 | Aktiv | 17,20 | 120,40 |


Und das eben mit den unterschiedlichen Beträgen...

greets
Robert

Re: SUM() Verständnissproblem

am 15.12.2005 21:36:11 von Stefan Rybacki

Robert Meyer wrote:
> Am Thu, 15 Dec 2005 13:48:13 +0100 schrieb Oliver Hirschi:
>...
> +------+-------------------------+--------+-------+--------- -----------------------------+
> | mgnr | Name | Status | skvs | SUM(IF(status = 0, '7,20', '17,20')) |
> +------+-------------------------+--------+-------+--------- -----------------------------+
> | 077 | Name 1 | Aktiv | 17,20 | 17 |
> | 137 | Name 2 | Aktiv | 17,20 | 17 |
> | 097 | Name 3 | Aktiv | 17,20 | 17 |
> | 141 | Name 4 | Aktiv | 17,20 | 17 |
> | 028 | Name 5 | Aktiv | 17,20 | 17 |
> | 092 | Name 6 | Aktiv | 17,20 | 17 |
> | 072 | Name 7 | Aktiv | 17,20 | 17 |
>
> Das ist nicht so ganz das was ich brauche...
> Ich brauche ne Summenbildung kummuliert...

Dann benutze auch Zahlen und keine Strings.
.... SUM(IF(status=0,7.2,17.2)) ...

>...

Bis denn dann
Stefan

Re: SUM() Verständnissproblem

am 15.12.2005 21:53:15 von Robert Meyer

Am Thu, 15 Dec 2005 21:36:11 +0100 schrieb Stefan Rybacki:

> Robert Meyer wrote:
>> Am Thu, 15 Dec 2005 13:48:13 +0100 schrieb Oliver Hirschi:
>>...
>> +------+-------------------------+--------+-------+--------- -----------------------------+
>> | mgnr | Name | Status | skvs | SUM(IF(status = 0, '7,20', '17,20')) |
>> +------+-------------------------+--------+-------+--------- -----------------------------+
>> | 077 | Name 1 | Aktiv | 17,20 | 17 |
>> | 137 | Name 2 | Aktiv | 17,20 | 17 |
>> | 097 | Name 3 | Aktiv | 17,20 | 17 |
>> | 141 | Name 4 | Aktiv | 17,20 | 17 |
>> | 028 | Name 5 | Aktiv | 17,20 | 17 |
>> | 092 | Name 6 | Aktiv | 17,20 | 17 |
>> | 072 | Name 7 | Aktiv | 17,20 | 17 |
>>
>> Das ist nicht so ganz das was ich brauche...
>> Ich brauche ne Summenbildung kummuliert...
>
> Dann benutze auch Zahlen und keine Strings.
> ... SUM(IF(status=0,7.2,17.2)) ...
>
> >...
>
> Bis denn dann
> Stefan

Das ändert aber auch nix an dem Problem - Ich bekomme keine kummulierte
Summe...

greets
Robert

Re: SUM() �

am 15.12.2005 22:33:15 von Stefan Rybacki

Robert Meyer wrote:
> Am Thu, 15 Dec 2005 21:36:11 +0100 schrieb Stefan Rybacki:
>
>
>>Robert Meyer wrote:
>>
>>>Am Thu, 15 Dec 2005 13:48:13 +0100 schrieb Oliver Hirschi:
>>>...
>>>+------+-------------------------+--------+-------+------ --------------------------------+
>>>| mgnr | Name | Status | skvs | SUM(IF(status = 0, '7,20', '17,20')) |
>>>+------+-------------------------+--------+-------+------ --------------------------------+
>>>| 077 | Name 1 | Aktiv | 17,20 | 17 |
>>>| 137 | Name 2 | Aktiv | 17,20 | 17 |
>>>| 097 | Name 3 | Aktiv | 17,20 | 17 |
>>>| 141 | Name 4 | Aktiv | 17,20 | 17 |
>>>| 028 | Name 5 | Aktiv | 17,20 | 17 |
>>>| 092 | Name 6 | Aktiv | 17,20 | 17 |
>>>| 072 | Name 7 | Aktiv | 17,20 | 17 |
>>>
>>>Das ist nicht so ganz das was ich brauche...
>>>Ich brauche ne Summenbildung kummuliert...
>>
>>Dann benutze auch Zahlen und keine Strings.
>>... SUM(IF(status=0,7.2,17.2)) ...
>>
>> >...
>>
>>Bis denn dann
>>Stefan
>
>
> Das ändert aber auch nix an dem Problem - Ich bekomme keine kummulierte
> Summe...
>

Ach jetzt seh ich erst was du willst ;)

Benutze Benutzervariablen also statt SUM() etwas in der Art

SET @sumskvs=0;

SELECT ... @sumskvs:=@sumskvs+IF(status=0, 7.2, 17.2) ...

Bis denn dann
Stefan

> greets
> Robert
>

Re: SUM() �

am 15.12.2005 22:55:45 von Robert Meyer

Am Thu, 15 Dec 2005 22:33:15 +0100 schrieb Stefan Rybacki:
>
> Ach jetzt seh ich erst was du willst ;)
>
> Benutze Benutzervariablen also statt SUM() etwas in der Art
>
> SET @sumskvs=0;
>
> SELECT ... @sumskvs:=@sumskvs+IF(status=0, 7.2, 17.2) ...
>
> Bis denn dann
> Stefan
>

Kommt hin - Was aber mach jetzt bitte falsch?!?!

SET @sumskvs=0;
select members.mgnr, concat(nn, ' ', vn) AS Name,
IF(status = 0, "Passiv", "Aktiv") AS Status,
IF(status = 0, '7,20', '17,20') AS skvs,
@sumskvs:=@sumskvs+IF(status = 0, 7.20, 17.20) as summe
FROM members, memclub WHERE members.mgnr = memclub.mgnr
AND status < 2 GROUP BY Name ORDER BY status;

+------+-------------------------+--------+-------+--------- ---------+
| mgnr | Name | Status | skvs | summe |
+------+-------------------------+--------+-------+--------- ---------+
| 077 | Name 1 | Aktiv | 17,20 | 336 |
| 137 | Name 2 | Aktiv | 17,20 | 836.400000000001 |
| 097 | Name 3 | Aktiv | 17,20 | 387.6 |
| 141 | Name 4 | Aktiv | 17,20 | 888.000000000001 |
| 028 | Name 5 | Aktiv | 17,20 | 38.8 |
| 092 | Name 6 | Aktiv | 17,20 | 439.2 |
| 072 | Name 7 | Aktiv | 17,20 | 490.8 |

greets
Robert

Re: SUM() �

am 15.12.2005 23:18:06 von Robert Meyer

Am Thu, 15 Dec 2005 22:33:15 +0100 schrieb Stefan Rybacki:

>
> Ach jetzt seh ich erst was du willst ;)
>
> Benutze Benutzervariablen also statt SUM() etwas in der Art
>
> SET @sumskvs=0;
>
> SELECT ... @sumskvs:=@sumskvs+IF(status=0, 7.2, 17.2) ...
>
> Bis denn dann
> Stefan
>

Jepp - merci vielmals...

Jetzt kann ich zwar nicht mehr nach status sortieren - aber des passt scho
- erstmal...

Danke nochmals...

greets
Robert