Domanda

Avendo diligentemente normalizzati tutti i miei dati, sto avendo un problema combinando righe 3NF in un'unica riga per l'uscita. Fino ad ora ho fatto questo con codifica lato server, ma per vari motivi ho ora bisogno di selezionare tutte le righe relative alla un'altra riga, e combinarli in una singola riga, il tutto in MySQL ...

Quindi, per cercare di spiegare:

Ho tre tabelle.

  • Categorie
  • Articoli
  • CategoryArticles_3NF

Una categoria contiene IDCategoria + titoli, descrizioni ecc Si può contenere qualsiasi numero di articoli nella tabella articoli, che consiste di ArticleID + un testo per ospitare i contenuti . I CategoryArticles tabella viene utilizzata per collegare i due, in modo da contiene sia il IDCategoria e ArticleID .

Ora, se seleziono un record di categoria, e mi unisco al tavolo articoli tramite la tabella CategoryArticles_3NF collega, il risultato è una riga separata per ogni articolo contenuto all'interno di tale categoria. Il problema è che voglio uscita una sola riga per ogni categoria, con contenuti da tutti articoli all'interno.

Se questo suona come una richiesta ridicola, è perché lo è. Sto solo usando gli articoli come un buon modo per descrivere il problema. I miei dati è in realtà un po 'diversa.

In ogni caso - l'unico modo che posso vedere per raggiungere questo obiettivo è quello di utilizzare un ' group_concat ' dichiarazione per raggruppare i campi di contenuto insieme - il problema di questo è che c'è un limite alla quantità di dati questo può tornare, e ho bisogno di essere in grado di gestire molto di più.

Qualcuno può dirmi come fare questo?

Grazie.

È stato utile?

Soluzione

Questo suona come qualcosa che dovrebbe essere fatto nel front-end, senza ulteriori informazioni.

Se è necessario, è possibile aumentare il limite di dimensione dei group_concat impostando la variabile di sistema group_concat_max_len . Esso ha un limite sulla base di max_allowed_packet , che si può anche aumentare. Credo che la dimensione massima di un pacchetto è di 1 GB. Se avete bisogno di andare più in alto rispetto a quello poi ci sono alcuni gravi difetti nel vostro disegno.

EDIT: Quindi che questo è nella risposta e non solo sepolto nei commenti ...

Se non si desidera modificare il group_concat_max_len a livello globale, allora si può cambiare solo per la sessione con:

SET SESSION group_concat_max_len = <your value here>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top