|
|
|
Спайка всех данных приJOINой таблицы в одну строку.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Перекочевал из MSSQL в MySQL. Суть задачи проста - есть некие страницы и к ним, к примеру, ссылки на блоги, комментарии и тд: Есть таблицы A (id, page) (1, 'abc') (2, 'cde') B (id, blog) (1, 'blog_1') (2, 'blog_2') (3, 'blog_3') B2A (a_id, b_id) (1, 1) (1, 2) (2, 3) Запрос примерно такой Код: sql 1. 2. 3. 4. В данном запросе будет две строки данных благодаря связке в B2A. Есть ли какой-то способ (как это есть в MSSQL типа xml for path()) соединить в поле BLOGS результаты выборки из таблицы B, таким образом сократив набор данных до одной строки, чтобы получилось: 1 страница + 2 блога (записи имеются в виду или нечто подобное). Благодарю за любые ответы по теме. Вопрос не направлен на изменение структуры, скорее чисто гипотетический и на интерес, но при этом я открыт к любым другим обсуждениям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 03:29:09 |
|
||
|
Спайка всех данных приJOINой таблицы в одну строку.
|
|||
|---|---|---|---|
|
#18+
_Промешан_, в рамках классического СКЛ вы всегда получаете одинаковые записи. Т.е. вернуть обьект/структуру "1 страница + 2 блога" в явном виде невозможно. Есть ограниченый вариант группировки "детишек": Код: sql 1. 2. 3. 4. 5. 6. нои уже проше будет сделать один запрос на А-родителя и другой отдельный запрос на Б-детишек. Некоторые фрейворки (RoR, CakePHP, и др) умеют делать единые запросы на родителей-детишек и разбирать их у себя на фремворке. Для начала я всоветую не мудрствовать лукаво и делать несколько простых запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 07:58:40 |
|
||
|
Спайка всех данных приJOINой таблицы в одну строку.
|
|||
|---|---|---|---|
|
#18+
GROUP BY + GROUP_CONCAT() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 12:23:47 |
|
||
|
Спайка всех данных приJOINой таблицы в одну строку.
|
|||
|---|---|---|---|
|
#18+
Спасибо всем! Похоже то, что надо. Единственное я так понял есть ограничение. ЕГо можно какой то командой выставить на весь срок службы сервера или надо каждый раз в запросе/инициализации конекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 14:40:11 |
|
||
|
Спайка всех данных приJOINой таблицы в одну строку.
|
|||
|---|---|---|---|
|
#18+
_Промешан_, http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_group_concat_max_len можно выставить в сессии, глобально на текуший запуск, в командной строке при запуске или в my.cfg: например в my.cfg: group_concat_max_len=16K ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 17:45:18 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=189&tid=1835301]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 338ms |

| 0 / 0 |
