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

    semplice uso di pivot su una tabella

    Salve,
    non riesco a far funzionare il pivot su una banalissima tabella.

    Vi posto il codice:

    codice:
    CREATE TABLE account(
    email varchar(40),
    data_creazione varchar(14) NOT NULL,
    password char(32) NOT NULL,
    denominazione varchar(150),
    cellulare varchar(20),
    ruolo int(1),
    inserito_da varchar(150),
    avatar longblob,
    sesso varchar(1),
    PRIMARY KEY (email),
    FOREIGN KEY (ruolo) REFERENCES ruoli(id) ON DELETE CASCADE ON UPDATE CASCADE
    )engine = InnoDB;
    
    
    
    
    
    
    SELECT utente1, utente2, utente3
                        FROM
                        (SELECT email, denominazione FROM account) x PIVOT ( MIN(email) FOR denominazione IN (utente1, utente2, utente3)) p
    Mi aspetterei come risultato semplicemente una tabella con le denominazioni dei primi tre utenti incolonnati invece ottengo il seguente errore di sintassi:

    codice:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PIVOT ( MIN(email) FOR denominazione IN (utente1, utente2, utente3)) p' at line 3
    Mi aiutereste a capire?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    scusa, a cosa serve pivot?

  4. #4
    http://www.html.it/articoli/sql-pivot-e-unpivot-1/

    aiuto...non riesco a capire se è un problema di supporto del mio mysql, di configurazione o altro...mi sembra corretta la sintassi!!

    L'errore è troppo generico non mi aiuta a capire!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    non conosco PIVOT ne posso fare prove inquanto utilizzo firebird e pivot non esiste.

    se, spieghi il tuo obiettivo, semmai si può trovare una forma diversa per ottenerlo

  6. #6
    Esiste sicuramente un'altra soluzione ma impiegherei due query quando ne basterebbe solo una. E' molto strano perchè PIVOT ha un uso molto comune! Credo anche di averlo usato in altri contesti anche se non ricordo dove e come (forse in ambiente uni)

    Ad ogni modo...io ho una tabella del genere:


    ACCOUNT
    | utente | denominazione | invito_a |

    | 123002 | Paperino | paperopoli |
    | 213344 | Paperina | paperopoli |
    | 554546 | Topolino | topolandia |
    | 343434 | Topolina | topolandia |


    vorrei con una sola query ottenere il seguente risultato:



    | invito_a | utente1 | utente2 |

    | paperopoli | Paperino | Paperina |
    | topolandia | Topolino | Topolina |



    ...questo si ottiene con l'uso di PIVOT che fa da perno su denominazione e ruota le righe trasformandole in colonne....

    mha! Non capisco dove sbaglio nella query

  7. #7
    Ok, uso GROUP_CONCAT()....resta il mistero però sul PIVOT.
    Se qualcuno riuscisse a farmi capire in futuro glie ne sarei grato.
    Saluti,
    grazie ugualmente

  8. #8
    GROUP_CONCAT crea problemi sui campi di tipo blob....

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.