Autore Topic: SQLite group_concat() o idea differente..  (Letto 412 volte)

Offline MrThor

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
SQLite group_concat() o idea differente..
« il: 06 Novembre 2013, 18:35:49 CET »
0
Ciao a tutti, vi spiego quello che vorrei fare nella mia app:

In db ho una tabella così strutturata:

Codice: [Seleziona]
idImp  | cer  | caus
---------------------
 id1    | 010  | D1
 id1    | 010  | D2
 id1    | 011  | D2
 id1    | 011  | D3
 id2    | 010  | D1
 id2    | 010  | D2
 id2    | 011  | D2
 id2    | 011  | D4

Quello di cui sono in cerca è di una query SQL che mi restituisca una cosa così, una concatenazione della colonna "caus" e della colonna "cer" con separatori particolari:

Codice: [Seleziona]
idImp | Conc
  id1   | '010-D1-D2;011-D2-D3;'
  id2   | '010-D1-D2;011-D2-D4;'

Cercando su internet e sulla documentazione di SQLite ho trovato questo funzione

Codice: [Seleziona]
group_concat(X)
group_concat(X,Y)        The group_concat() function returns a string which is the concatenation of all non-NULL values of X.
If parameter Y is present then it is used as the separator between instances of X. A comma (",") is used as the separator if Y is omitted.
The order of the concatenated elements is arbitrary.

che fa quello che servirebbe a me ma lo fa solo su una colonna, mentre il mio obiettivo è concatenarne 2.

In realtà generare questa concatenazione direttamente in SQL non è strettamente necessario, penso sia possibile (non ho la più pallida idea di quale delle 2 strade sia più performante) farlo anche all'interno del codice java prima che l'adapter estragga i dati dal cursor e li butti nelle view.

Riassumendo: La necessita è quella di concatenare l'informazione estratta da un database "gruppandola" per [idImp/cer] così che nella mia lista non ci siano idImp duplicati ma senza perdere l'informazione accessoria.

Qualcuno più esperto di me può aiutarmi? Idee? Soluzioni?

Sperando di essermi spiegato vi saluto.
MrThor


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SQLite group_concat() o idea differente..
« Risposta #1 il: 07 Novembre 2013, 00:05:07 CET »
0
Io farei in SQL una query SELECT * FROM tabella ORDER BY idImp,cer,caus.
Quello che ne esce è facilmente gestibile in Java per ottenere l'output che ti serve, perchè intanto hai prima tutti gli id1 e poi tutti gli id2, poi all'interno degli id1 hai prima gli 010 e poi gli 011.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store