0

I have two tables: Person, PersonType

    Person                         PersonType                          PersonTypeMapping
personId   name                 typeId     typeName                tId   personId   typeId
  101         p1                  1        Student                 123       101       1
  102         p2                  2        Employee                124       102       1
  103         p3                                                   125       102       2
                                                                   126       103       1
                                                                   127       103       2

Now I need to fetch the person names and their corresponding typeNames.

This is my query

SELECT Person.personId, Person.name,PersonType.typeName 
from Person 
    INNER JOIN PersonTypeMapping ON PersonTypeMapping.personId = Person.personId 
    INNER JOIN PersonType ON PersonType.typeId = PersonTypeMapping.typeId; 

My Output:

   personId       name        typeName
   101             p1          Student
   102             p2          Student
   102             p2          Employee
   103             p3          Student
   103             p3          Employee

But I need output like this:

   personId       name        typeName
   101             p1          Student
   102             p2          Student, Employee
   103             p3          Student, Employee

What can be done for this?

RiggsFolly
  • 93,638
  • 21
  • 103
  • 149
Sangeet
  • 145
  • 3
  • 9
  • ```SELECT Person.personId, Person.name,PersonType.typeName, GROUP_CONCAT(PersonType.typeName SEPARATOR ', ') FROM Person INNER JOIN PersonTypeMapping ON PersonTypeMapping.personId = Person.personId INNER JOIN PersonType ON PersonType.typeId = PersonTypeMapping.typeId; GROUP BY PersonType.typeName ``` –  Oct 28 '19 at 10:26

1 Answers1

0
SELECT Person.personId, Person.name, Group_Concat(PersonType.typeName) 
from Person 
    INNER JOIN PersonTypeMapping ON PersonTypeMapping.personId = Person.personId 
    INNER JOIN PersonType ON PersonType.typeId = PersonTypeMapping.typeId
GROUP BY Person.personId, Person.name;
Booboo
  • 38,656
  • 3
  • 37
  • 60