Ho cercato molto, ma non ho trovato una soluzione adeguata al mio problema.SQL GROUP_CONCAT diviso in diverse colonne
Che cosa voglio fare?
Ho 2 tabelle in MySQL: - Paese - valuta (Mi unisco a loro insieme tramite CountryCurrency -> a causa di relazione molti a molti)
vedere questo per un esempio di lavoro: http://sqlfiddle.com/#!2/317d3/8/0
Voglio collegare entrambe le tabelle usando un join, ma voglio mostrare solo una riga per paese (alcuni paesi hanno più valute, quindi questo era il primo problema).
ho trovato la funzione group_concat:
SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currency
FROM country
INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
GROUP BY country.name
Ciò ha il seguente risultato:
NAME ISOCODE_2 CURRENCY
Afghanistan AF Afghani
Åland Islands AX Euro
Albania AL Lek
Algeria DZ Algerian Dinar
American Samoa AS US Dollar,Kwanza,East Caribbean Dollar
Ma quello che voglio ora è quella di dividere le valute in diverse colonne (moneta 1, valuta 2, ...). Ho già provato funzioni come MAKE_SET() ma questo non funziona.
SQL non supporta un numero dinamico di colonne. Dovrai farlo nell'applicazione. – Vatev
È possibile utilizzare la logica in un cursore per eseguire questa operazione. Ma il cursore dovrebbe prima esaminare il numero di colonne di dati necessarie per il set di risultati. Crea dinamicamente una tabella temporanea per essere popolata e successivamente selezionata. Un numero indefinito di colonne è il problema di questa sfida. –