Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    5

    [mysql] aiuto formulazione query

    Ciao a tutti, avrei bisogno di una mano per creare una matrice utilizzando una query il più semplice possibile (o comunque il minor numero di query possibile).

    Ho tre tabelle fatte così:

    la prima è l'elenco degli utenti:

    users(id, nome, citta)

    la seconda raccoglie le ore che gli utenti hanno dedicato a varie attività:

    attivita(id, data, tipoatt, durata)

    e l'ultima raccoglie l'elenco delle attività esistenti:

    tipi(tipoatt, area)


    Ho bisogno di stampare una tabella come quella rappresentata qui sotto.
    Nella colonna TOT ORE devo sommare tutte le 'durata' legate all'id di ogni utente.
    Nella colonna TIPOATTx invece devo sommare tutte le 'durata' di ogni utente che però hanno il determinato TIPOATTx.
    La cosa che mi ha dato più problemi è che io non so a priori quante colonne TIPOATTx ci sono, perchè devo prenderle dalla tabella tipi.

    Mi aiutate? Grazie.

    codice:
     nome  ||  citta   || TOT ORE ||  di cui  || TIPOATT1  ||  TIPOATT2  ||  TIPOATT3 || ...
           ||          ||         ||          ||           ||            ||           || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    Re: [mysql] aiuto formulazione query

    ciao, ovviamente nella tabella attivita(id, data, tipoatt, durata) 'id' fa riferimento alla tabella user?!

    Originariamente inviato da Polco
    Ho bisogno di stampare una tabella come quella rappresentata qui sotto.
    Nella colonna TOT ORE devo sommare tutte le 'durata' legate all'id di ogni utente.
    Nella colonna TIPOATTx invece devo sommare tutte le 'durata' di ogni utente che però hanno il determinato TIPOATTx.
    La cosa che mi ha dato più problemi è che io non so a priori quante colonne TIPOATTx ci sono, perchè devo prenderle dalla tabella tipi.

    Mi aiutate? Grazie.

    codice:
     nome  ||  citta   || TOT ORE ||  di cui  || TIPOATT1  ||  TIPOATT2  ||  TIPOATT3 || ...
           ||          ||         ||          ||           ||            ||           || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    xxxx   || xxxxxxx  ||   xxx   ||          ||  xxxxxx   ||  xxxxxxxx  ||  xxxxxxxx || ...
    io non credo che si possa risolvere, visto che sono possibili n attivita diverse.
    credo che si deve prevedere il risultato su piu righe.

    ma forse, mi sbaglio.... vediamo se qualche guru riesce a dare un suggerimento migliore

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    5
    Si si l'id in attivita fa riferimento a users.
    Se comunque non si riesce a fare con una sola query, il tutto va inserito in una pagina php, quindi se avete un'idea per ottenere questo risultato sfruttando magari qualche ciclo in php va bene lo stesso...

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se non conosci a priori il numero di attività le cose si complicano un pò e devi ricorrere a una stored procedure come in questo thread.

    http://forum.html.it/forum/showthrea...light=dinamica

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.