MySQL group_concat avec la clause where

J'ai eu ce problème avec Group_Concat et où le filtre. Dans ma table j'ai eu les noms des modules qui sont liés à un client. Je recherche des clients par le nom du module, mais dans le groupe concat je veux voir tous les modules qui sont détenus par le client. actuellement, il affichera tous les clients avec ces modules, mais il n'afficher que le module spécifique. Je ne peux pas comprendre comment les rendre à la fois de travailler ensemble.

Des suggestions sur la façon d'obtenir mon résultat attendu??

Ces quelques tableaux de base et de la requête, j'ai essayé avec des résultats que j'obtiens et le résultat que je voulais vraiment

Client
+--------------------+
| id      |  name    |
+--------------------+
| 1       | client1  |
| 2       | client2  |
| 3       | client3  |
| 4       | client4  |
+--------------------+

Module
+--------------------+
| id      |  name    |
+--------------------+
| 1       | module1  |
| 2       | module2  |
| 3       | module3  |
| 4       | module4  |
+--------------------+

Client_Module
+-------------------------+
| client_id  | module_id  |
+-------------------------+
| 1          | 2          |
| 1          | 3          |
| 2          | 1          |
| 2          | 2          |
| 2          | 4          |
| 3          | 4          |
| 4          | 1          |
| 4          | 2          |
| 4          | 3          |
| 4          | 4          |
+-------------------------+

Requête:

SELECT     client.id, client.name, GROUP_CONCAT(module.name) AS modules
FROM       client
LEFT JOIN  client_module ON client_module.client_id = client.id
LEFT JOIN  module ON module.id = client_module.module.id
WHERE      module.id IN (1,2)

Résultats:

Received
+--------------------------------------------------+
| id     | name     | modules                      |
+--------------------------------------------------+
| 1      | client1  | module2                      |
| 2      | client2  | module1,module2              |
| 4      | client4  | module1,module2              |
+--------------------------------------------------+

Expected
+------------------------------------------------------+
| id     | name     | modules                          |
+------------------------------------------------------+
| 1      | client1  | module2,module3                  |
| 2      | client2  | module1,module2,module4          |
| 4      | client4  | module1,module2,module3,module4  |
+------------------------------------------------------+
vous utilisez WHERE client_module.module_id IN (1,2) dans votre requête ,quel est le problème ici?
mon mauvais, qui n'était pas dans la requête d'origine dépouillé la mauvaise partie de la. Corrigé
Il y a le problème a été résolu?
Pas de problème demeure. C'était une maquette de la faille
Vous utilisez client_module.module_id IN (1,2) donc ça va évidemment choisir seulement module1, module2..Supprimer la clause where pour obtenir le résultat attendu

OriginalL'auteur telefoontoestel | 2014-03-10