Несколько строк в одной строке запроса - PullRequest
1 голос
/ 21 июля 2011

В моей базе данных, когда я делаю этот запрос:

SELECT *
FROM users u
LEFT JOIN usersToStrategy uts on uts.userID = u.userID
LEFT JOIN strategy s on uts.stratID  = s.stratID  

Я получаю следующие результаты:

 userID    username  fName   utsID  userID   stratID  stratID   stratName
   1       nlubin     Neal    66      1        4       4         s3
   1       nlubin     Neal    65      1        3       3         s5
   1       nlubin     Neal    64      1        2       2         s2
   1       nlubin     Neal    63      1        1       1         s1

Как мне структурировать мой запрос, чтобы вместо получения этих четырех строк (только для одного пользователя) я получал одну строку для пользователя со всеми стратами пользователя в одной ячейке в строке, например:

 userID    username  fName      stratNames
   1       nlubin     Neal    s3, s5, s2, s1

Я могу дать вам столько информации, сколько я могу в пределах разумного, чтобы помочь с вопросом.

Ответы [ 3 ]

2 голосов
/ 21 июля 2011

Я думаю, что вы ищете GROUP_CONCAT

SELECT userID, username, fName, GROUP_CONCAT(stratNames SEPARATOR ', ') AS strats
FROM users u
LEFT JOIN usersToStrategy uts on uts.userID = u.userID
LEFT JOIN strategy s on uts.stratID  = s.stratID  
GROUP BY userID, username, fName
2 голосов
/ 21 июля 2011

Вы используете GROUP_CONCAT .

0 голосов
/ 21 июля 2011

Используйте GROUP_CONCAT вот так

SELECT userID,
username,
fName,   
GROUP_CONCAT(stratNames)
FROM users u
LEFT JOIN usersToStrategy uts on uts.userID = u.userID 
LEFT JOIN strategy s on uts.stratID  = s.stratID   
GROUP BY username;
...