фильтрация результатов group_concat, запроса внутреннего соединения - PullRequest
2 голосов
/ 16 декабря 2011

Новичок здесь. Код ниже делает отличную работу, возвращая результаты, которые я хочу. Единственная проблема заключается в том, что я не могу понять, как вернуть только определенный диапазон дат (находится в столбце checkdate). Единственный способ, которым я могу заставить его фильтровать по дате checkdate, - это GROUP BY empchecks.checkdate и использовать HAVING checkdate> = что угодно. Но я должен GROUP BY сотрудников.enum. Я уверен, что упускаю что-то простое.

    SELECT employee_data.a, 
           employees_data.b, employee_data.c, 
           GROUP_CONCAT(empchecks.d 
               ORDER BY empchecks.checkdate 
              SEPARATOR '<br /> ') 
           AS checknum, 
           GROUP_CONCAT(empchecks.checkdate 
               ORDER BY empchecks.checkdate      
              SEPARATOR '<br /> ') 
           AS checkdate, 
      FROM employees 
INNER JOIN empchecks ON employees.enum = empchecks.enum 
  GROUP BY empchecks.enum

1 Ответ

0 голосов
/ 16 декабря 2011

Вам необходимо добавить предложение WHERE. Также незначительное исправление - этой последней запятой после AS checkdate быть не должно.

SELECT employee_data.a, employees_data.b, employee_data.c, 
       GROUP_CONCAT(empchecks.d ORDER BY empchecks.checkdate SEPARATOR '<br /> ') as checknum, 
       GROUP_CONCAT(empchecks.checkdate ORDER BY empchecks.checkdate SEPARATOR '<br /> ') as checkdate
    FROM employees 
        INNER JOIN empchecks 
            ON employees.enum = empchecks.enum 
    WHERE empchecks.checkdate >= @begin_date
      AND empchecks.checkdate <= @end_date
    GROUP BY empchecks.enum;
...