Pergunta

Tendo normalizado obedientemente todos os meus dados, estou tendo problemas para combinar linhas 3NF em uma única linha para saída. Até agora, tenho feito isso com a codificação do servidor, mas por várias razões, agora preciso selecionar todas as linhas relacionadas a outra linha e combiná-las em uma única linha, tudo em MySQL ...

Então, para tentar explicar:

Eu tenho três mesas.

  • Categorias
  • Artigos
  • Categoryarticles_3nf

Uma categoria contém Categoria ID + títulos, descrições etc. Ele pode conter qualquer número de artigos na tabela de artigos, consistindo em Artigo + um campo de texto para abrigar o conteúdo. o Categoryarticles A tabela é usada para vincular os dois, então contém os dois Categoria ID e a Artigo.

Agora, se eu selecionar um registro de categoria e ingressar na tabela de artigos através da tabela de vinculação categoryarticles_3nf, o resultado é uma linha separada para cada artigo contido nessa categoria. A questão é que eu quero produzir uma única linha para cada categoria, contendo conteúdo de tudo Artigos dentro.

Se isso soa como um pedido ridículo, é porque é. Estou apenas usando os artigos como uma boa maneira de descrever o problema. Meus dados são realmente um pouco diferentes.

Enfim - a única maneira de ver isso é usar um 'Group_concat'Declaração para agrupar os campos de conteúdo - o problema é que há um limite para a quantidade de dados que isso pode retornar, e eu preciso que ele seja capaz de lidar significativamente mais.

Alguém pode me dizer como fazer isso?

Obrigado.

Foi útil?

Solução

Isso soa como algo que deve ser feito no front -end sem mais informações.

Se precisar, você pode aumentar o limite de tamanho de group_concat definindo a variável do sistema group_concat_max_len. Tem um limite baseado em max_allowed_packet, que você também pode aumentar. Eu acho que o tamanho máximo para um pacote é de 1 GB. Se você precisar subir mais do que isso, existem algumas falhas graves em seu design.

Edit: para que isso esteja na resposta e não apenas enterrado nos comentários ...

Se você não quer mudar o group_concat_max_len Globalmente, então você pode alterá -lo apenas para sua sessão com:

SET SESSION group_concat_max_len = <your value here>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top