У меня отношения «многие ко многим» между «проектами» и «участниками». Один проект может иметь много участников, и один участник может иметь много проектов. Допустим, у Джона есть 3 проекта. Когда я выполняю sql с объединением, я получаю 3 строки, по одной строке для каждого из проектов Джона. Хотя это данные, которые мне нужны, в представлении (MVC) я хочу отображать Джона только один раз, а в представлении для проектов Джона есть поле, в котором я хочу отобразить все 3 проекта Джона. Есть ли способ объединить эти проекты в SQL, или я должен сделать это с некоторой логикой, похожей на:
pseudo-code
userid=null; //to make sure that i am grouping only one users' projects
projectname = null; //will be appended to in each iteration of loop
foreach( row_in_resultset as row )
{
projectname += " " + row->projectname;
if( this_is_a_different_userid )
{
projectname = ""; //reset the project name
}
}
Приведенный выше код - это просто быстрое удаление мозгов, но, надеюсь, понятно, что для каждого участника я хочу получить конечный результат 1 объекта участника, подобного этому
participant
{
name = john smith
address = 100 foobar street
projects = paint house, feed cat, do stuff
}
в отличие от того, что я сейчас получаю, а это
participant
{
name = john smith
address = 100 foobar street
projects = paint house
}
participant
{
name = john smith
address = 100 foobar street
projects = feed cat
}
participant
{
name = john smith
address = 100 foobar street
projects = do stuff
}
Это кажется довольно простым вопросом, и в прошлом я бы уже сделал это уже. Но я ищу возможный лучший путь.
Спасибо!