Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030

    query semplice semplice che conta due valori

    Salve
    piccolo aiuto su una query semplice (ogni tanto faccio 100 cose insieme e vado letteralmente in pappa).

    io ho una tabella mysql con un migliaio di inserimenti tipo

    ID_ins (int) || data (date) || nome (varchar) || risultato1 (int) || risultato2 (int)
    1 || 2011-01-01|| paolo rossi || 5 || 10
    2 || 2011-01-01|| paolo rossi || 1 || 4
    3 || 2011-01-02|| paolo rossi || 3 || 6
    4 || 2011-01-02|| mario bianchi || 2 || 5

    nella stesso giorno (data) una stessa persona (nome) può fare più inserimenti
    io dovrei sapere in un intervallo di date che mi arriva da un form quante persone hanno inserito qualcosa in quei giorni..
    nell'esempio sopra dovrei quindi avere come risultato 3 (2 valori per rossi e uno per bianchi).
    Come mi conviene metterla giù la query?
    Se faccio semplicemente un COUNT(ID_ins) mi somma più volte gli inserimenti della stessa persona (da ovviamente risultato 4), se però specifico che i giorni debbano essere diversi non conto due persone che hanno lavorato lo stesso giorno (mi da come risultato 2)... come mi direste di fare?
    Grazie mille
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    io non ho campito

  3. #3
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    Originariamente inviato da bstefano79
    io non ho campito
    sapevo di essermi spiegato male

    praticamente ci sono delle persone che fanno degli inserimenti di cose che hanno venduto
    il loro titolare ogni tot giorni vuole vedere quante persone sono state impegnate in tutto per vendere quelle cose

    quindi se mario lunedì mattina (01-01-2011) ha venduto 10 cose
    sempre mario lunedì pomeriggio (sempre 01-01-2011) ha venduto altre 5 cose
    gli inserimenti sono 2, ma le persone impegnate in quel giorno sono 1 soltanto
    ma se anche antonio lunedì mattina ha venduto 3 cose
    gli inserimenti son 3 ma le persone impegnate sono 2
    nell'intervallo richiesto però c'è anche martedì
    e martedì mario ha venduto altre 4 cose
    mentre andrea non ha lavorato
    quindi gli inserimenti sono 4, i giorni sono 2, ma le "persone" che hanno lavorato in quei giorni sono 3 (due giorni mario e un giorno andrea).

    Ecco, con una tabella fatta così:
    ID_ins (int) || data (date) || nome (varchar) ...
    come faccio ad avere quel "3" come risultato, cioè quante persone in tutto (anche ripetute) hanno lavorato in quei giorni?
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  4. #4
    Stando alla tabella tu vorresti questi risultati

    dal 1/1 al 1/1 = 1 (solo rossi ha fatto qualcosa)
    dal 1/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa)
    dal 2/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa)

    Giusto?
    Oppure vuoi
    dal 1/1 al 1/1 = 2 (solo rossi ha fatto qualcosa e l'ha fatto 2 volte)
    dal 1/1 al 2/1 = 4 (rossi e bianchi han fatto qualcosa, 3 volte rossi e una bianchi)
    dal 2/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa, una a testa)

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prova così

    SELECT COUNT(DISTINCT data,nome) FROM tabella where etc etc

  6. #6
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    Originariamente inviato da Dascos
    Stando alla tabella tu vorresti questi risultati

    dal 1/1 al 1/1 = 1 (solo rossi ha fatto qualcosa)
    dal 1/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa)
    dal 2/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa)

    Giusto?
    Oppure vuoi
    dal 1/1 al 1/1 = 2 (solo rossi ha fatto qualcosa e l'ha fatto 2 volte)
    dal 1/1 al 2/1 = 4 (rossi e bianchi han fatto qualcosa, 3 volte rossi e una bianchi)
    dal 2/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa, una a testa)
    eh, in realtà io vorrei
    dal 1/1 al 1/1 = 1 (solo rossi ha fatto qualcosa [due volte, ma nello stesso giorno])
    dal 1/1 al 2/1 = 3 (rossi ha fatto qualcosa 2 in due giorni e bianchi ha fatto qualcosa in 1)
    dal 2/1 al 2/1 = 2 (rossi e bianchi han fatto qualcosa)
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  7. #7
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    Originariamente inviato da bstefano79
    prova così

    SELECT COUNT(DISTINCT data,nome) FROM tabella where etc etc
    provo
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  8. #8
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    Originariamente inviato da darkiko
    provo
    pare funzionare!

    merci!
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  9. #9
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prego

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.