Объединить содержимое нескольких строк в таблицах MySQL 3NF

StackOverflow https://stackoverflow.com/questions/2061777

Вопрос

Послушно нормализовав все мои данные, у меня возникла проблема с объединением 3NF строк в одну строку для вывода.До сих пор я делал это с помощью серверного кодирования, но по разным причинам теперь мне нужно выбрать все строки, связанные с другой строкой, и объединить их в одну строку, все в MySQL...

Итак, чтобы попытаться объяснить:

У меня есть три столика.

  • Категории
  • Статьи
  • Категория article_3nf

Категория содержит Идентификатор категории + названия, описания и т.д.Он может содержать любое количество статей в таблице Articles, состоящей из АртикльИД + текстовое поле для размещения содержимого.Тот Самый Категорияартикулы таблица используется для связывания этих двух элементов, поэтому содержит как Идентификатор категории и тот АртикльИД.

Теперь, если я выберу запись категории и ПРИСОЕДИНЮСЬ к таблице Articles через таблицу linking categoryarticle_3nf, результатом будет отдельная строка для каждой статьи, содержащейся в этой категории.Проблема в том, что я хочу вывести одну строку для каждой категории, содержащую контент из ВСЕ статьи внутри.

Если это звучит как нелепая просьба, то это потому, что так оно и есть.Я просто использую статьи как хороший способ описать проблему.Мои данные на самом деле несколько отличаются.

В любом случае - единственный способ, который я вижу для достижения этой цели, - это использовать 'ГРУППА_CONCAT инструкция для группировки полей содержимого вместе - проблема с этим заключается в том, что существует ограничение на объем данных, которые это может возвращать, и мне нужно, чтобы оно могло обрабатывать значительно больше.

Кто-нибудь может сказать мне, как это сделать?

Спасибо.

Это было полезно?

Решение

Это звучит как нечто, что должно быть сделано во внешнем интерфейсе без дополнительной информации.

Если вам нужно, вы можете увеличить ограничение по размеру GROUP_CONCAT, установив системную переменную групповая встреча_max_len.У него есть ограничение, основанное на max_allowed_packet_ максимальный разрешенный пакет, который вы также можете увеличить.Я думаю, что максимальный размер пакета составляет 1 ГБ.Если вам нужно подняться выше этого уровня, значит, в вашем дизайне есть какие-то серьезные недостатки.

Редактировать:Так что это есть в ответе, а не просто скрыто в комментариях...

Если вы не хотите менять групповая встреча_max_len глобально, то вы можете изменить его только для вашего сеанса с:

SET SESSION group_concat_max_len = <your value here>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top