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

    [MySQL] campi colonna di ogni riga, in nomi colonna distinti

    Ciao a tutti!
    Volevo sapere se è possibile assegnare a nomeNuovaCol (nomeCol AS nomeNuovaCol) dove nomeNuovaCol sarà distinta per ogni colonna di ogni riga trovata con una select.

    Mi spiego meglio con un esempio:

    Ho la tabella utente:
    codice:
    nome     cognome  eta 
    andrea    rossi    18
    fabio     cozzi    25
    mario     bianchi  18
    luca      verdi    18
    vorrei selezionare le prime 4 persone che hanno 18 anni con un'unica query (in questo caso quindi saranno 3 le persone trovate), e assegnare "nome" e "cognome" in "nomeCampi" differenti, in questo modo:
    codice:
    nomeCampo   valore
    nome1       andrea
    cognome1    rossi
    
    nome2       mario
    cognome2    bianchi
    
    nome3       luca
    cognome3    verdi
    La seguente query è incompleta, ma non so come completarla/modificarla:
    codice:
    SELECT
       utente1.`nome` AS nome1,
       utente1.`cognome` AS cognome1
    FROM
       utente AS utente1
    WHERE
       utente1.`eta` = 18;
    LIMIT 4
    infatti questa query è sbagliata perchè restituisce i nomi delle colonne tutti uguali:
    codice:
    nomeCampo   valore
    nome1       andrea
    cognome1    rossi
    
    nome1       mario  ---> nome2?
    cognome1    bianchi ---> cognome2?
    
    nome1       luca --->nome3?
    cognome1    verdi --->cognome3?
    Se non è possibile assegnare i nomi di ogni colonna per ogni riga distinti, in che modo posso ottenere un risultato simile? Devo per forza eseguire 4 query (invece di una sola) con l'utilizzo di OFFSET?

    Aspetto vostri suggerimenti!
    Grazie!

  2. #2
    Scusa la domanda...lo scopo di questo "lavoro"?
    No perchè forse puoi farlo lato programmazione..php, asp o quel che è

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Bisogna dire che la fantasia non manca su 'sto forum


    Qualcosa del genere
    codice:
    select @rownum:=@rownum+1 riga,
    concat('cognome',@rownum) as progressivocognome,
    cognome,
    concat('nome',@rownum) as progressivonome
    
    from
    
    quello che vuoi
    
    (SELECT @rownum:=0) r 
    
    order by quello che vuoi desc limit quello che vuoi;

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    La fantasia è il germe del miglioramento

  5. #5
    Risultato sperato (1 riga 4 colonne):
    nome1 cognome1 nome2 cognome2
    andrea rossi mario bianchi
    Ho provato la seguente query, ma restituisce un errore:
    codice:
    SELECT 
         @rownum:=@rownum+1 riga,
         CONCAT('cognome',@rownum) AS progressivocognome,
         cognome,
         CONCAT('nome',@rownum) AS progressivonome
    
    FROM
         utente
         (SELECT @rownum:=0) r 
    
    WHERE eta=18
    
    ORDER BY id ASC
    
    LIMIT 2 OFFSET 0
    Potresti correggerla?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    manca la , dopo utente

  7. #7
    Ottengo sempre più righe invece di una sola...

    codice:
    SELECT 
         @rownum:=@rownum+1 riga,
         CONCAT('cognome',@rownum) AS progressivocognome,
         cognome,
         CONCAT('nome',@rownum) AS progressivonome
         nome, 
    FROM
         utente,
         (SELECT @rownum:=0) r 
    WHERE eta=18
    ORDER BY id ASC
    LIMIT 2 OFFSET 0
    risultato
    codice:
    1 	andrea 	636f676e6f6d6531 	rossi 	6e6f6d6531
    2 	mario 	636f676e6f6d6532 	bianchi 	6e6f6d6532
    cmq... io ho risolto utilizzando PHP... però mi farebbe piacere sapere cosa fa questa query e come in realtà andrebbe scritta...

    Ah... grazie 1000

    PS scusate... è vero che mi manca la fantasia... ma è anche vero che sono alle prime armi.. in PHP me la cavo... con SQL sono ancora in alto mare...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    non ho capito una ceppa.
    posta un DESCRIBE della tabella

    questa
    codice:
    SELECT
          @rownum:=@rownum+1 riga,
     CONCAT('citta',@rownum) AS progressivocitta,
    
          citta,
     CONCAT('cap',@rownum) AS progressivocap,
         cap
     FROM
         clienti,
         (SELECT @rownum:=0) r
    where cap<>''
    ORDER BY ditta ASC
    limit 5
    su una normale anagrafica ditta,citta,cap restituisce qualcosa tipo

    riga,"progressivocitta","citta","progressivocap"," cap"
    1,"citta1","Fano","cap1","61032"
    2,"citta2","Milano","cap2","20124"
    3,"citta3","Reggio Emilia","cap3","42121"
    4,"citta4","Rimini","cap4","47900"
    5,"citta5","Cesena","cap5","47023"

  9. #9
    Ok, mi ero espresso male io...
    Vorrei sapere se è possibile da questa tabella:
    codice:
    CREATE TABLE IF NOT EXISTS `utente` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(20) NOT NULL,
      `cognome` varchar(20) NOT NULL,
      `eta` int(3) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
    
    INSERT INTO `utente` (`id`, `nome`, `cognome`, `eta`) VALUES
    (1, 'andrea', 'rossi', 18),
    (2, 'fabio', 'cozzi', 25),
    (3, 'mario', 'bianchi', 18),
    (4, 'luca', 'verdi', 18);
    ottenere esattamente questo risultato (1 riga 4 colonne):
    codice:
    nome1   cognome1   nome2    cognome2
    andrea   rossi     mario     bianchi

    PS ci sono riuscito con PHP, ma mi domando se è possibile farlo direttamente con SQL

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da ajaxSensitive
    ottenere esattamente questo risultato (1 riga 4 colonne):
    codice:
    nome1   cognome1   nome2    cognome2
    andrea   rossi     mario     bianchi

    PS ci sono riuscito con PHP, ma mi domando se è possibile farlo direttamente con SQL
    devi fare una matrice trasposta, se il numero dei risultati è fisso non vedo perchè no.

    Se invece intendi un qualsiasi numero di colonne... non lo so
    ---
    PS confermo che la fantasia non manca in questo forum... a me mai e poi mai sarebbe venuto in mente di usare SQL per una cosa del genere

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.