Visualizzazione dei risultati da 1 a 9 su 9

Discussione: query mysql con "sum"

  1. #1
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    query mysql con "sum"

    ciao a tutti,

    ho un problemino co una query di mysql:

    la tabella e composta da:
    id
    data
    materiale
    utente1
    utente2
    utente3
    ecc sino a quindici utenti

    i campi utunti contengono numeri che io vorrei sommare per singlola colonna

    utilizzare:
    Codice PHP:
    $sql ="select sum (utente1) from tabella"
    non è un problema...

    ma esiste una scorciatoia per avere la singola somma di ciascuna colonna utente(n)?

    o è necessario scrivere la query riportando il singolo "sum" per ciascun utente?

    grazie

  2. #2
    Utente di HTML.it L'avatar di r1cky`
    Registrato dal
    Feb 2007
    Messaggi
    431
    Scusami ma secondo me una tabella fatta in quel modo è sintomo di una cattiva progettazione!

  3. #3
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    credo che tu abbia ragione...
    è da un pò di tempo che penso la stessa cosa... è probabile che debba rivedere tutta l'impostazione delle tabelle.... e lavorare di più sulle relazioni, di certo mi risolverebbero diversi problemi.
    grazie comunque

  4. #4
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    Forse sto volando troppo alto.
    penso alla rimodulazione delle tabelle...
    l'obiettivo sarebbe la registrazione di presenze...
    l'alternativa a cui arrivo è la creazione di tante tabelle quanti sono gli utenti, i dati che ogni utente sono molti e abbracciano un lasso di tempo abbastanza ampio.
    Per spiegarmi meglio, ogni utente è un allievo e, eventualmente, sulla sua tabella dovrei riportare la frequenza e la materia frequentata per ogni singolo giorno (un pò contorto, spero di essere stato chiaro),
    quindi di seguito la tabella allievo dovrebbe essere: id, data, materiaid, fequenza(int);

    ho già una tabella materia (id, data, materia, docenteid);
    una docente (id, docente, monteore, data);
    una corso (relativo all'orario);
    mi dai qualche consiglio su questa soluzione???

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    che vuoi dire con
    l'alternativa a cui arrivo è la creazione di tante tabelle quanti sono gli utenti
    la tabella utenti è una.
    è semplice poi tramite l'id relazionarla con 1000 altre per tutti gli usi che vuoi farne.
    te praticamente hai 15 utenti e hai creato 15 campi utente? tipo utente1, utente2, etc?

    non ti serve una tabella per ogni utente, ma una tabella presenze dove metti la frequenza in un giorno, che ne so in ore, di uno studente.
    Improvviso, non prendermi alla lettera che scrivo di getto.
    tabella utenti:
    id - nome - nick (anagrafica in generale) password (non so se possono loggarsi o no..)..

    tabella presenze
    P_id - data (anche timestamp, ma da vedere..) - ore (di presenza)


    leghi con una join l'id al P_id e con una query ottieni le presenze di uno studente.. poi con PHP fai fare la somma delle ore del singolo studente..
    boh? è una soluzione troppo facile, nel senso che la tua situazione è più complessa?

  6. #6
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    dunque, proviamo a riepilogare:
    una tabella utente (id, utente, data)
    una tabella materia (id, materia, docenteid, data)
    una tabella docente (id, docente, monteore, data)
    una tabella presenze (id, timestamp, frequenza, materiaid, utenteid)

    questa dovrebbe essere la nuova impostazione...

    il mio timore è sulla tabella presenze, per un giorno sono dovrebbe raccogliere come minimo 30 records da moltiplicare per almeno 260 giorni. appesantisco i processi in questo modo? soprattutto quando dovrò ottenre i vari output?



  7. #7
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ..se hai così tanti dati, non c'è verso di appesantire in un modo o nell'altro il server...
    vediamo se altri utenti più esperti di me ti sanno aiutare meglio di me..
    comunque sono 8000 record.. non sono tantissimi..

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    fondamentale, per un database, non sono tanto la quantità di dati che deve gestire (che è pur sempre fondamentale), ma soprattutto la struttura delle tabelle.

    nel tuo caso ti basterà utilizzare correttamente gli indici delle teballe al fine di semplificare, e non di poco, il lavoro della ricerca record nella tabella

    la struttura delle tabelle non è errata ma se metti un indice su utenteid e timestamp nella tabella presenze sei già a posto

    il resto vien da se.

    utilizza un unico metodo di archiviazione delle date (timestamp ad esempio) e dovrai solo fare delle comparazioni matematiche anche direttamente in query

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    grazie del consiglio...
    adesso provo la parte finale (la prima parte l'avevo già sviluppata) spero che tutto vada a buon fine..

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.