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

    Query mysql Trasporre per gruppo

    Buon Giorno a tutti e complimenti per il forum.


    Ho una macchina ubuntu con installato mysql 5.5.35


    Ho importato una csv di circa 6GB e ho bisogno di estrarre alcune informazioni tramite query in maniera fluida senza fare troppi giri per non compromettere le prestazioni del server.


    la tabella è strutturata nel seguente modo:

    INDIVIDUO TIPO DESCRIZIONE
    100 A XX
    100 B YY
    100 C ZZ
    100 D GG
    100 E HH
    ... ... ...
    200 A UU
    200 B KK
    200 C EE
    200 D RR
    200 E LL
    ... ... ...
    300 A PP
    300 B SS
    300 C TT
    300 D CC
    300 E VV
    ... ... ...



    Un singolo codice individuo si ripete per circa 250.000, le righe per ogni codice individuo hanno sempre lo stesso numero. La colonna TIPO ha sempre la stessa sequenza per tutti gli individui.... in poche parole sono presenti n righe per ogni codice individuo quante sono le tipologie della colonna TIPO.


    Ho la necessità di creare una query che mi restituisca i risultati disposti nel seguente modo:

    INDIVIDUO TIPO A TIPO B TIPO C TIPO D TIPO E TIPO ...
    100 XX YY ZZ GG HH ...
    200 UU KK EE RR LL ...
    300 PP SS TT CC VV ...
    ... ... ... ... ... ... ...


    Avete qualche suggerimento?


    Vi ringrazio in anticipo.


    Mik
    Ultima modifica di mikeee79; 28-02-2014 a 11:47

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Premetto che non ho modo di provarla, quindi non garantisco nulla.
    Se funziona, ti tira fuori A B e C, per aggiungere le altre basta proseguire allo stesso modo.
    Ovviamente al posto di 'tabella' devi mettere il nome della tabella

    select ta.individuo, ta.descrizione as tipoa, tb.descrizione as tipob, tc.descrizione as tipoc
    from tabella ta join tabella tb on (ta.individuo = tb.individuo and ta.tipo = 'A' and tb.tipo = 'B') join tabella tc on (ta.individuo = tc.individuo and ta.tipo = 'A' and tc.tipo = 'C')

  3. #3
    Quote Originariamente inviata da luca200 Visualizza il messaggio
    Premetto che non ho modo di provarla, quindi non garantisco nulla.
    Se funziona, ti tira fuori A B e C, per aggiungere le altre basta proseguire allo stesso modo.
    Ovviamente al posto di 'tabella' devi mettere il nome della tabella

    select ta.individuo, ta.descrizione as tipoa, tb.descrizione as tipob, tc.descrizione as tipoc
    from tabella ta join tabella tb on (ta.individuo = tb.individuo and ta.tipo = 'A' and tb.tipo = 'B') join tabella tc on (ta.individuo = tc.individuo and ta.tipo = 'A' and tc.tipo = 'C')
    Grazie luca!,
    ho già provato qualcosa del genere, il problem è che le row TIPO sono circa 250.000, e questo credo sia un problema insormontabile perché se non sbaglio mysql supporta al massimo 4096 colonne, si potrebbe comunque risolvere sempre con una query ma con output su un file csv...
    cosa ne pensate?

  4. #4
    se il tuo output deve essere una tabella di database... non puoi

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da mikeee79 Visualizza il messaggio
    le row TIPO sono circa 250.000, e questo credo sia un problema insormontabile perché se non sbaglio mysql supporta al massimo 4096 colonne
    Ma cosa stai dicendo?!!?
    Quanti valori hai per la colonna TIPO?

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.