Kalle_B: MySQL GROUP Problem

Hallöle,

bei diesem SQL:

SELECT
 gruppen_id
,aussteller_id
,count(*)                             wuensche
,max(slot_nr)                         max_slot
,count(IF((max(slot_nr)=0), NULL, 1)) gebucht
FROM      tm_kontakte
WHERE     owner_id=5 AND gruppen_id>0 AND ( prio_1=1 OR prio_2=1 )
GROUP BY  gruppen_id, aussteller_id

kommt die Fehlermeldung

1111: Invalid use of group function

die sich auf Zeile 6 (,count(IF ...) bezieht. Wenn ich die Zeile auskommentiere, kommt der Fehler nicht.

Durch GROUP fasse ich 1..n Sätze einer Gruppe zusammen, die verschiedene slot_nr haben können. Ich möchte nur zählen, wenn mindestens eine slot_nr größer ist als 0 (Zahl Null).

Wie geht das?

Gruß, Kalle

  1. Hallo!

    Durch GROUP fasse ich 1..n Sätze einer Gruppe zusammen, die verschiedene slot_nr haben können. Ich möchte nur zählen, wenn mindestens eine slot_nr größer ist als 0 (Zahl Null).

    Was meinst Du mit "zählen"? Du gruppierst ja nach gruppen_id und aussteller_id. Die Datensätze mit der gleichen gruppen_id und aussteller_id haben eine MAX(slot_nr). Willst Du nun ein zusätzliches berechnetes Feld haben, das 0 ist wenn MAX(slot_nr) = 0 und 1 sonst? Das geht ganz einfach:

    SELECT ...
      IF(MAX(slot_nr) = 0, 0, 1) gebucht
    ...

    Oder was genau willst Du erreichen?

    Viele Grüße,
    Christian

  2. Hallo Kalle,

    Durch GROUP fasse ich 1..n Sätze einer Gruppe zusammen, die verschiedene slot_nr haben können. Ich möchte nur zählen, wenn mindestens eine slot_nr größer ist als 0 (Zahl Null).

    Wie geht das?

    mit einem Subselect.

    Freundliche Grüße

    Vinzenz