0

My SQL looks like this:

SELECT GROUP_CONCAT(technologies.tech) AS technologies, personal.city, GROUP_CONCAT(languages.language) AS languages 
FROM personal 
INNER JOIN technologies ON technologies.uid = personal.uid 
INNER JOIN languages ON languages.uid = personal.uid 
WHERE personal.uid = 88

The result:

| technologies        |  city          |  languages               |
|---------------------|:--------------:|-------------------------:|
| PHP,HTML,JavaScript |  Chicago       |  English,English,English |

As you see English is getting repeated. How can I make it to appear only once?

Reza Saadati
  • 1,224
  • 13
  • 27

1 Answers1

1

You have an aggregation query with unaggregated columns in the SELECT and no GROUP BY. I would recommend:

SELECT GROUP_CONCAT(DISTINCTt.tech) AS technologies, p.city, 
       GROUP_CONCAT(DISTINCT l.language) AS languages 
FROM personal p INNER JOIN
     technologies t
     ON t.uid = p.uid INNER JOIN
     languages l
     ON l.uid = p.uid 
WHERE p.uid = 88
GROUP BY p.city;

Notes:

  • GROUP_CONCAT(DISTINCT) answers your question
  • Table aliases make the query much easier to read.
  • p.city is bare in the SELECT. Recent versions of MySQL will complain; so I added the GROUP BY.
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786