Klaus Mock: (MySQL) wiedermal ein spezielles select-Problem

Beitrag lesen

Hallo,

das mit dem group +ber zwei Felder geht wohl schon, aber ich bekomme noch nicht die Where-Clausel hin, mit dem count(*) > 1

select *,count(*) as test from buchungen where ndatum like '2002-01%' AND test > 1 group by personalnummer, ndatum;

'test' ist im where-teil noch nicht bekannt.

verwende doch count(*) anstelle von test.
Außerdem solltest Du vorsichtig sein, wenn ndatum nicht nur das Datum beinhaltet, sonder auch unterschiedliche Uhrzeiten. Sonst gruppiert das statement auch nach der Zeit, was allerdings in Deinem Fall nicht das Gelbe vom Ei wäre. Vielleicht solltest Du mit

select personalnummer,max(ndatum)
   from buchungen
   group by personalnummer,TO_DAYS(ndatum)
   having count(*) >1

arbeiten, um die relevanten Informationen rauszuholen.
BTW.: Wenn Du 'group by' einsetzt, dann mußt Du alle Felder, welche nicht in der 'group by'-Klausel verwendet werden, mittels Aggregatfunktionen abfragen (SUM,COUNT,MIN,MAX,...) siehe http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Group_by_functions

Muss ich das also doch in einer Schleife laufen lassen und auf > 1 überprüfen?

nein

Grüße
  Klaus