2017-01-04 2 views
0

У меня две таблицы выглядят так.Выберите запрос с GROUP_CONCAT в mysql

пользователи

id  name 
10  dani 
9  mark 
8  himel 
7  dipu 

config_project

id assignee_web assignee_app assignee_qa 
29  10,7,9  10,7   10,9 
28  10,8  9,10,7   8 

здесь, assignee_web, assignee_app и assignee_qa все ссылки идентификатор с IDпользователей стол. Теперь я хочу запрос на выборку, какой выход будет выглядеть

id assignee_web   assignee_app   assignee_qa 
29 dani,dipu,mark   dani, dipu   dani,mark 
28  dani,himel   dani,mark,dipu   himel 

я wriiten запрос, который отображает только assignee_web. Вот мой код

SELECT c.id as id, GROUP_CONCAT(u.name SEPARATOR ', ') as assignee_web FROM config_project c, users u 
     WHERE FIND_IN_SET(u.id, c.assignee_web) 
     GROUP BY c.id ORDER BY c.id DESC 

я могу получить только assignee_web данные, но не может возвращать данные для assignee_app и assignee_qa с этим запросом.

+3

Нормализовать ваши таблицы. Период. – GurV

+0

Какие результаты вы получаете сейчас? –

+1

и любые другие ваши вопросы решены? или они все еще открыты/не решены? –

ответ

1

Вы можете использовать коррелирующие запросы:

SELECT c.id as id, 
     (SELECT GROUP_CONCAT(u.name SEPARATOR ', ') 
     FROM users u 
     WHERE FIND_IN_SET(u.id, c.assignee_web)) as assignee_web, 
     (SELECT GROUP_CONCAT(u.name SEPARATOR ', ') 
     FROM users u 
     WHERE FIND_IN_SET(u.id, c.assignee_app)) as assignee_app, 
     (SELECT GROUP_CONCAT(u.name SEPARATOR ', ') 
     FROM users u 
     WHERE FIND_IN_SET(u.id, c.assignee_qa)) as assignee_qa     
FROM config_project c 
ORDER BY c.id DESC 

Хотя вы должны нормализовать данные. Люди просто не учатся, и каждый раз, когда у вас возникают какие-то новые проблемы, вы будете продолжать их.

+0

Да, это работает. Спасибо большое. – user7149801

+1

Пожалуйста, сделайте это привычкой принимать ответы, которые решают ваши проблемы, поэтому люди узнают, что вопрос закрыт, и ответивший человек получит свою награду. @ user7149801 – sagi

+0

Я должен отметить ответ, но у меня меньше репутации, поэтому я не могу голосовать или отмечать ответ. в этом случае, что я могу сделать сейчас? Я новичок в stackoverflow – user7149801

Смежные вопросы