2011-11-12 3 views
0

Après avoir fait quelques jointures et des choses je table dans le format suivantProblème avec Mysql GROUP_CONCAT

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

Je veux que mes résultats à être regroupés comme celui-ci

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

Alors je MySql group_concat dans sql comme

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 - Vous avez une erreur dans votre syntaxe SQL, consultez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de 'AS id_associé, FROM_UNIXTIME (sr.timestart) AS timestart, sr.session_id AS' à la ligne 6 "

Quelque chose ne va pas avec ce sql?

+3

* "Une erreur" *? Quelle erreur obtenez vous? –

+0

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'AS tutor_id' – user401445

+1

Il semble que la clause "from" soit manquante. – MatTheCat

Répondre

2
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 

Problèmes:

  1. Aucune clause FORMULAIRE
  2. PARENTESIS où ne correspond pas à
  3. GROUP_CONCAT peut être fait sur un champ, vous devez CONCAT() toutes les valeurs en premier.
+0

qui n'était pas le sql réel ... juste une abstraction ... J'ai mis à jour la question – user401445

+0

Utilisez mon exemple pour modifier votre requête –

+0

travaillé comme un charme ... mais je suis toujours confus quel était le problème dans la requête précédente? – user401445