SELECT * FROM clubEventsCal
...
GROUP BY ceStopDate
Это гиббери sh.
MySQL (в зависимости от конфигурации) позволяет не задыхаться, но это семантически неверно и выделяется как антишаблон.
Есть некоторые крайние случаи, когда возвращаемые значения могут содержать важные данные, но они очень необычны. Попытка объяснить проблему с помощью кода, который не работает, возможно, не лучшая стратегия.
Глядя на ваш код, вполне возможно, что вам не нужно объединение, но в ваших примерах записей недостаточно информации для скажем, если бы это действительно дало ожидаемый результат (это будет значительно быстрее в зависимости от ваших индексов):
SELECT IF(cefreq=1, rid, null) AS consolidator
, ceid
, cefreq
, MIN(cedate), MAX(cedate)
, ceStopDate
FROM clubEventsCal
WHERE cID=1001
AND ceActive!=2
AND (ceDate>='$firstDay' AND ceDate<='$lastDay')
GROUP BY IF(cefreq=1, rid, null)
, ceid
, cefreq
, ceStopDate
;
Я бы добавил ORDER BY, но я не знаю, откуда появился clId
из. Кроме того, это даст разные результаты того, что, как я думаю, вы пытались достичь для любой записи, где cefreq
имеет значение null (если вы действительно хотите их исключить, добавьте предикат в предложение WHERE).