SQL: отображать несколько значений записей в одном поле из подзапроса - PullRequest
2 голосов
/ 24 октября 2011

У меня есть SQL LIKE:

SELECT S.*, 
   (SELECT I.NAME FROM institution I, inst_map IM 
           WHERE IM.STUDENT = S.ID AND IM.INSTITUTION = I.ID) as INSTITUTIONS 
FROM student S

В этом случае мой подзапрос может вернуть несколько записей (я получу ошибку: Subquery returns more than 1 row).

Какпоказать эти несколько значений из моего подзапроса в одном поле (в моем случае INSTITUTIONS) через запятую?

Все идеи приветствуются.

Ответы [ 2 ]

4 голосов
/ 24 октября 2011

Попробуйте этот запрос -

SELECT s.*, GROUP_CONCAT(t.NAME) INSTITUTIONS FROM student s
  LEFT JOIN (SELECT * FROM institution i
              JOIN inst_map im
                ON im.INSTITUTION = i.ID
             ) t
  ON s.ID = t.STUDENT
GROUP BY s.ID

Функция GROUP_CONCAT поможет вам получить значения, разделенные запятыми.

0 голосов
/ 24 октября 2011
DECLARE @List VARCHAR(5000)
SELECT @List = COALESCE(@List + ', ' + Display, Display)
FROM TestTable
Order By Display

запрос взят по следующей ссылке, и статья объясняет запрос отлично, я надеюсь, что он работает http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/289/creating-comma-separated-list-in-sql.aspx

P.S Это для SQL Server, я думаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...