Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74

    [mysql] subquery per selezionare colonne specifiche di una tabella

    Ciao a tutti,
    nel mio db mysql ho una tabella 't_avvisi' che contiene parecchi campi. Io vorrei visualizzare la somma solo dei campi che iniziano con 'mod_'. Ho utilizzato group_concat per ricavare la stringa dei campi che mi interessa, però non riesco ad inserirla dentro la query principale:

    subquery:
    select group_concat(column_name separator ',') as str_testate from information_schema.columns where table_name ='t_avvisi' and COLUMN_NAME like '%mod_%')

    ho provato con:
    select (select group_concat(column_name separator ',') as str_testate from information_schema.columns where table_name ='t_avvisi' and COLUMN_NAME like '%mod_%')) from t_avvisi

    ma ottengo lo stesso risultato della subquery.

    Potete darmi una mano?

    Grazie.

  2. #2
    Fai prima la query con group_concat() e poi la usi per comporre l'altra. SQL è un linguaggio dichiarativo.
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74
    ok, ma il risultato della prima query deve essere salvato in una variabile? Non riesco a capire come le due query si relazionano tra loro. Puoi farmi l'esempio pratico?
    Grazie.

  4. #4
    Non ti conviene fare tutto in SQL. Dovresti lanciare la query in PHP, mettere in risultato in una variabile PHP, e poi usarla per comporre la seconda query.

    Se vuoi farlo in SQL, ma ripeto non ti conviene, dovresti usare una procedura che esegue un prepared statement. Vado molto a spanne, non ti aspettare che sia giusta, è solo per darti l'idea generale:

    CREATE PROCEDURE nome_proc
    MODIFIES SQL DATA
    BEGIN
    DECLARE colonne TEXT;
    SET colonne = 'select group_concat(column_name separator \',\') as str_testate from information_schema.columns where table_name = \'t_avvisi\' and COLUMN_NAME like \'%mod\\_%\'';
    SET @sql = CONCAT('select ', colonne, ' from t_avvisi');
    PREPARE stmt FROM @sql;
    EXECUTE stmt INTO ...;
    DEALLOCATE PREPARE stmt;
    SELECT ...;
    END;

    (al posto di ... nella select e in execute devi mettere le variabili che corrispondono alle colonne, che ovviamente vanno dichiarate all'inizio)
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74
    si...in effetti hai ragione, meglio affidarsi al php! domani provo e ti faccio sapere. grazie mille. ciao

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.