Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    mysql query unione righe


    Ciao a tutti.
    Ecco il mio problema ho una tabella mysql che contiene questi dati:

    +--+---------------+----------+
    |ID|DESCRIZIONE |IMPORTO |
    +--+---------------+----------+
    | 1|descr 1 | 10|
    +--+---------------+----------+
    | |descr 1.2 | |
    +--+---------------+----------+
    | 2|descr 2 | 13|
    +--+---------------+----------+
    | |descr 2.2 | |
    +--+---------------+----------+
    | |descr 2.3 | |
    +--+---------------+----------+
    | 3|descr 3 | 6|
    +--+---------------+----------+
    | |descr 3.1 | |
    +--+---------------+----------+
    | |descr 3.2 | |
    +--+---------------+----------+
    | |descr 3.3 | |
    +--+---------------+----------+

    (purtroppo il file di partenza è un txt con questo formato) per razionalizzare la tabella ho la necessità di unire il campo descrizione che è suddiviso su più righe per fare un unica riga per ogni ID che contenga la descrizione completa e cancellare le righe senza ID. Esiste una query per farlo? mi sono quasi convinto che ci sia ma .... non si sa mai.

    Grazie a tutti


  2. #2
    non son sicuro di aver capito... proviamo:

    prima di tutto devi dare lo stesso id anche alle righe che non ce l'hanno:

    chiamiamo test1 la tabella ed i campi come li hai chiamati tu, la struttura di descrizione "deve" essere come hai indicato sopra:

    codice:
    UPDATE test1
    set id = substr(descrizione, 7, 1)
    where id = 0 --oppure ''
    questo perche' apparentemente il primo valore numerico di descrizione e' uguale all'id

    ora dovresti avere tutte le righe con l'id assegnato.

    A questo punto fai una copia su una nuova tabella concatenando le righe di descrizione raggruppate per id ed il gioco e' fatto.

    codice:
    create table test2
    select id, 
    group_concat(descrizione) as descrizione, 
    importo
    from test3
    group by id
    order by id
    Per aggiungere altre righe userai INSERT ... SELECT con lo stesso criterio. Scarichi su una tabella provvisoria, associ l'id, trasferisci su tabella definitiva.

    con group_concat puoi anche assegnare il divisore di stringa che ti pare meglio.

    http://dev.mysql.com/doc/refman/5.0/...n_group-concat

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    grazie!
    ora provo subito non sapevo esistesse un'istruzione group_concat
    grazie ancora

  4. #4
    Originariamente inviato da claudio1453
    grazie!
    ora provo subito non sapevo esistesse un'istruzione group_concat
    grazie ancora
    occhio che per errore ho scritto:

    importo
    from test3

    in realta' deve essere test1 e non test3 .... cioe' la tabella in cui scarichi i dati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.