|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
[SQL] Passaggio da una colonna ad un singolo valore
Ciao raga,
avrei un problema che non riesco a risolvere, magari sarò un pò arrugginito... il problema è questo: devo impacchettare un'intera colonna in un unico valore. Mi spiego meglio. Supponiamo che il risultato della query sia la seguente colonna: column 1 Cellulare Televisione Automobile Io vorrei avere questo risultato: column 1 Cellulare Televisione Automobile Ovvero prendere i 3 risultati ed inserirli in un'unica "cella". Fatemi sapere come procedereste... il numero di risultati può variare, attualmente da zero a 5.
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
In SQL standard non si puo'.
Sotto MySql c'e' una funzione precostruita chiamata GROUP_CONCAT, che "forse" fa al caso tuo. Sotto SqlServer e sotto Oracle si puo' fare una funzione di gruppo Custom, per poter fare quello che chiedi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 411
|
In MySQL puoi usare CONCAT.
Codice:
SELECT CONCAT(campo1,campo2,campo3 ... ) FROM tabella ...
__________________
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Quote:
Così non risolverei, il problema è che non sono campi separati sulla stessa riga, ma lo stesso campo su righe diverse, è una cosa differente. Se volevo fare così potevo usare la concatenazione di PostgreSQL: campo1 || ' ' || campo2 || ' ' || campo3 || ' ' || ...
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Mi sono informato e quindi vi confermo che è possibile creare funzioni di aggregazione (come count o sum, per intenderci) personalizzate anche con PostgreSQL: direi che il problema è, quindi, risolvibile.
--- EDIT --- Ecco, a mio modesto parere, la magnifica soluzione al problema Codice scroccato da internet. Vediamo i preparativi. Col primo passo creiamo la funzione aggregata array_accum per impacchettare i dati che ci interessano in un array: Codice:
CREATE AGGREGATE array_accum (
sfunc = array_append,
basetype = anyelement,
stype = anyarray,
initcond = '{}'
);
Codice:
CREATE TABLE test (
tipologia varchar(100) primary key
);
INSERT INTO test VALUES ('Cellulare');
INSERT INTO test VALUES ('Televisione');
INSERT INTO test VALUES ('Automobile');
Codice:
SELECT * FROM test "Cellulare" "Televisione" "Automobile" Codice:
SELECT array_accum(tipologia) FROM test
"{Cellulare,Televisione,Automobile}"
Codice:
SELECT array_to_string(array_accum(tipologia), ' ') FROM test "Cellulare Televisione Automobile"
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo Ultima modifica di amedeoviscido : 10-01-2009 alle 14:14. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:52.




















