2010-11-05 7 views
0

Lors de l'exécution de cette requête, je m'attends à recevoir 2 mobilenumbers et 1 catégorie, au lieu de 2 catégories, que fais-je de mal? Je suppose que cela a à voir avec la façon dont je me joins aux choses?MySQL group_concat avec 2 jointures renvoie des résultats non désirés

utilisateur peut avoir plusieurs, categoryjoin liens utilisateur années IMEI à plusieurs catégories

SELECT 
    u.*, 
    group_concat(i.mobilenumber) as mobilenumbers, 
    group_concat(c.name) as categories 
FROM 
    users AS u 
INNER JOIN 
    categoryjoin AS cj 
ON 
    u.uid = cj.user_id 
INNER JOIN 
    categories AS c 
ON 
    cj.category_id = c.uid 
INNER JOIN 
    imei AS i 
ON 
    u.uid = i.user_id 
GROUP BY 
    u.uid 

Big pré-merci pour votre aide!

Répondre

2

Si un utilisateur correspond à une catégorie, mais correspond à 2 lignes dans imei, la catégorie sera dupliquée dans le jeu de résultats. Vous pouvez vous débarrasser des valeurs redondantes de group_concat en utilisant DISTINCT:

SELECT 
    u.*, 
    group_concat(distinct i.mobilenumber) as mobilenumbers, 
    group_concat(distinct c.name) as categories 
Questions connexes