Проблема с Mysql group_concat - PullRequest
       2

Проблема с Mysql group_concat

0 голосов
/ 12 ноября 2011

После некоторых объединений и прочего у меня есть таблица в следующем формате

  name    session_id   status 
    abc         1          null       
    xyz         2          11          
    jack        2          10
    zuck        1          10 
    paul        1          10 

Я хочу, чтобы мои результаты были сгруппированы следующим образом

 session_id   name+status                   
    1            abc:-1, zuck:10, paul:10
    2            xyz:11, jack:11 

Поэтому я использовал MySql group_concat в sqlкак

    SELECT sr.avail_id AS id,sr.student_id, sa1.punctuality_status as associate_punctuality_status, IF(
                    (sa.punctuality_status IS NULL),
                    (group_concat(u.firstname, ' ', u.lastname, ':', '-1'), 
                    (group_concat(u.firstname, ' ', u.lastname, ':', sa.punctuality_status)
                    ),
                    sr.tutor_id AS associate_id, FROM_UNIXTIME( sr.timestart ) AS timestart,  
                    sr.session_id AS session_id, sr.type AS session_type, p.name AS program_name,
             m.name AS module_name, ms.name AS session_name, sr.status as session_status FROM mdl_session_requests AS sr 
        LEFT JOIN mdl_session_attendee AS sa ON ( sr.student_id = sa.user_id AND sr.session_id = sa.session_id )  
        LEFT JOIN mdl_session_attendee AS sa1 ON (sr.tutor_id=sa1.user_id and sr.session_id=sa1.session_id)  
        INNER JOIN mdl_module_session ms ON ms.id = sr.course_id    
        INNER JOIN mdl_module m ON m.id = ms.module_id   
        INNER JOIN mdl_program p ON p.id = m.program_id   
        INNER JOIN mdl_user u ON u.id = sr.student_id    
        WHERE sr.tutor_id =438 group by avail_id order by sr.timestart desc

error = "# 1064 - у вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'AS associate_id, FROM_UNIXTIME (sr.timestart) AS timestart, sr.session_id AS 'в строке 6 "

Что-то не так с этим sql?

1 Ответ

2 голосов
/ 12 ноября 2011
SELECT 
     s.session_id AS id,
     group_concat(SEPARATOR ', ' CONCAT(u.firstname, ' ', u.lastname, ':',IF(s1.status IS NULL,'-1',s1.status))), sr.tutor_id

FROM [a table]
GROUP BY session_id

Проблемы:

  1. Нет предложения FORM
  2. парентез, где не совпадает
  3. GROUP_CONCAT можно сделать для одного поля, поэтому сначала нужно CONCAT() все значения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...