2013-12-20 2 views
1

У меня есть две таблицы, scoreTable и пользователи. Я пытаюсь группировать хэш на scoreTable, но выбираю все имена пользователей, которые имеют этот хеш. scoreTable имеет только идентификаторыПодзапрос group_concat mysql возвращает только один элемент

SELECT st.score, 
GROUP_CONCAT(st.uid) as userList 
FROM scoreTable st 
GROUP BY hash 

Для приведенного выше запроса я получаю список пользователя идентификаторов в USERLIST: '1,2,3,4'

То, что я хотел бы получить этот реальные «имена» вместо идентификаторов - имена находятся на другом столе (пользователях)

SELECT st.score, 
(SELECT group_concat(d.name) from users d d where d.uid = st.uid)) 
FROM scoreTable st 
GROUP BY hash 

Но по какой-то причине это отображает только пользователя ONE (пользователя с первым идентификатором).

+0

Помещенный GROUP BY в вашем подзапрос – Mihai

ответ

2

Просто присоединиться на users таблице:

SELECT st.score, group_concat(d.name) 
FROM  scoreTable st 
JOIN  users d ON d.uid = st.uid 
GROUP BY hash 
+0

+1 Если мощность баллов совпадает с хэш – Cez

+0

@Cez Первый запрос в OP принимает это, Я просто продолжал с этого предположения. – Mureinik

+0

отлично поработал, теперь, чтобы выяснить, как group_concat имя и идентификатор в формате json, который не сломается, если имя имеет двойные кавычки ... – K2xL

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