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

    [mysql] Query complessa di raggruppamento

    Ciao a tutti,
    ho una tabella utenti nel mio database che contiene, tra gli altri, i campi:

    Forza
    Volontà
    Costanza
    Affidabilità
    Serietà
    Compassione
    Equilibrio
    Empatia

    Questi campi possono assumere un valore numerico che va da 1 a 5
    Vorrei costruire una query che mi restituisca due colonne, la prima che chiameremo "Punti di debolezza" mi elencherà solo i campi che hanno un valore numerico 1 e 2; la seconda colonna visualizzata dalla query la chiameremo "Punti di forza" ed al suo interno troverò elencati solo i campi il cui valore è 4 o 5.

    Mi date qualche idea su come poter strutturare questa query?

    Grazie!!

    Tiziano

  2. #2
    Mi spiego meglio:
    parto da questa tabella

    http://www.willmarry.net/test/PRIMA.gif

    e vorrei creare una query che mi raggruppi sotto le voci "PUNTI DI FORZA" e "PUNTI DI DEBOLEZZA" l'elenco dei campi di un certo record che hanno valore 4 e 5 per il primo raggruppamento e 1 e 2 per il secondo raggruppamento.
    Facciamo ad esempio il caso dell'utente Simone Cataldo della tabella sopra; avrò come risultato della ipotetica query:

    http://www.willmarry.net/test/SECONDA.gif

    Mi dareste un'idea su come strutturarla?

    Grazie mille!

    Tiziano

  3. #3
    Originariamente inviato da Tulipan0nero
    Mi spiego meglio:
    parto da questa tabella

    http://www.willmarry.net/test/PRIMA.gif

    e vorrei creare una query che mi raggruppi sotto le voci "PUNTI DI FORZA" e "PUNTI DI DEBOLEZZA" l'elenco dei NOMI DEI CAMPI di un certo record che hanno valore 4 e 5 per il primo raggruppamento e 1 e 2 per il secondo raggruppamento.
    Facciamo ad esempio il caso dell'utente Simone Cataldo della tabella sopra; avrò come risultato della ipotetica query:

    http://www.willmarry.net/test/SECONDA.gif

    Mi dareste un'idea su come strutturarla?

    Grazie mille!

    Tiziano

  4. #4
    Ho trovato girovagando per la rete una possibile soluzione:
    ----------------------------------------------------------------------------------------------
    Lo standard SQL definisce il modo in cui recuperare i metadati (ovverosia i dati riguardanti i dati : nomi tabelle, campi, indici, etc...)
    Tutte queste informazioni sono memorizzate in un db che si chiama Information_Schema (secondo lo standard ANSI/ISO SQL).
    Questo db contiene le seguenti tabelle :
    - Schemata (restituisce informazioni rigurado ai databases);
    - Tables (restituisce informazioni riguardo le tabelle nei databases);
    - Columns (restituisce informazioni riguardo le colonne nelle tabelle;
    - esistono altre tabelle (Statistics, User_Privileges, etc..);

    A questo db si accede con delle normali select.
    Questa dovrebbe essere la query che ti serve :

    Select * from INFORMATION_SCHEMA.COLUMNS
    where table_name = \'nome della tua tabella\'
    [and table_schema = \'nome del tuo db\']


    Dovrebbe restituirti una riga per ogni colonna della tabella (con almeno questi campi : table_schema, table_name, column_name, data_type, etc ....). Prova prima senza specificare il nome del tuo db (le parentesi quadre indicano che è un pezzo di query opzionale).
    --------------------------------------------------------------------------------------------
    Partendo da questa traccia potete darmi una mano a costruire questa query? GRAZIE!!!

    Tiziano

  5. #5
    Una partenza è questa:

    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'utenti'

    Così però ottengo l'elenco di tutti i campi....io vorrei invece due elenchi: il primo con i campi che hanno valore 4 o 5, il secondo con i campi aventi valore 1 e 2.
    Si può fare?

    Io penso che la tabella INFORMATION_SCHEMA non sia altro che un'indicizzazione di tutte le risorse contenute all'interno delle tabelle...Non vedo come possa avere accesso anche ai valori dei campi di ogni record di ogni singola tabella. Io vorrei che questa benedetta query attingesse all'elenco dei campi (e lo fa già) ma mi visualizzasse solo quelli il cui valore è X. Ma come farlo?

    Sarebbe una cosa forse concettualmente così?
    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '(SELECT * from utenti WHERE Forza=1 OR Forza=2 OR Volontà=1 OR Volontà=2 OR COstanza=1 OR COstanza=2.etc etc)



    Tiziano

  6. #6
    Qualcuno ha qualche idea?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.