Discussione chiusa
Visualizzazione dei risultati da 1 a 9 su 9

Query con due count

  1. #1
    delfin96 non è in linea Novello
    Ciao a tutti, spero di non aver sbagliato sezione. Sono nuovo su questo forum. Vorrei estrarre da un DB con due tabelle (utenti e modifiche) alcuni dati: ID utente, nome utente, numero di modifiche fatte nei 6 mesi precedenti e numero totale di modifiche effettuate fino a una certa data. Avevo pensato a una cosa così:

    SELECT id_utente, nome_utente, COUNT(id_modifica) AS numero_modifiche_6_mesi, COUNT(id_modifica) AS numero_modifiche_totali
    FROM utenti INNER JOIN modifiche
    ON modifiche.id_utente = utenti.id_utente
    #WHERE tempo_modifica < 2015-12-31
    #AND tempo_modifica > 2015-07-01
    GROUP BY nome_utente
    
    ma non so come faccio a far capire a MySQL che il primo count deve essere inerente solo ai primi 6 mesi (dal 1 luglio 2015 al 31 dicembre 2015) mentre il secondo count deve contare le modifiche in tutto fino a oggi (da sempre - fino al 31 dicembre 2015).

    Avete dei suggerimenti? Pensavo di fare l'union ma non mi convince la cosa perchè i nomi dei campi sono diversi. Grazie in anticipo per l'aiuto.

  2. #2
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Se non vuoi fare una UNION, puoi fare una sotto-query all'interno della prima.
    Scusa, ma ci spieghi come fanno ad essere diversi i nomi dei campi visto che le tabelle sono le stesse???
    Io non vedo campi diversi...

    P.S. la tua query è sbagliata, sia dal punto di vista logico che sintattico.
    Oltre a questo, a cosa servono i cancelletti (#) prima di WHERE e AND ?
    ℹ️ Leggi di più su gibra ...

  3. #3
    delfin96 non è in linea Novello
    Non è che non voglio fare l'union, ma non saprei come farlo. Infatti ripensandoci i campi sono uguali. Potresti darmi almeno un suggerimento come farlo?

    Sì, sò che è sbagliata, era per rendere l'idea tantochè ho commentato il where che è sbagliato.
    Ultima modifica di delfin96; 01-01-2016 21:38 

  4. #4
    L'avatar di gibra
    gibra non è in linea Very Important Person
    La sintassi della UNION è banalissima, dato che non è altro che due query unite:

    select elenco_campi from tabella where codizione
    union
    select elenco_campi from tabella where codizione


    Onestamente non saprei di quale suggerimento hai bisogno.
    Ti sei documentato sulle query di unione?
    ℹ️ Leggi di più su gibra ...

  5. #5
    delfin96 non è in linea Novello
    Ho usato la seguente sintassi:

    SELECT id_utente, nome_utente, 
    SUM(case when tempo_modifica between 2015-07-01 and 2015-12-31 then 1 else 0 end) AS numero_modifiche_6_mesi, 
    COUNT(id_modifica) AS numero_modifiche_totali
    FROM utenti INNER JOIN modifiche
    ON modifiche.id_utente = utenti.id_utente
    GROUP BY nome_utente
    
    e ora funziona. Grazie.

  6. #6
    L'avatar di sistemista
    sistemista ora è in linea Topo di biblioteca
    Scusa, ma qui non va bene,nel senso che tu hai messo dei campi fissi di data,ma nel tempo non cambierà il periodo delle date?
    between 2015-07-01 and 2015-12-31
    
    ℹ️ Leggi di più su sistemista ...

  7. Quote Originariamente inviato da delfin96 Visualizza il messaggio
    Ho usato la seguente sintassi:

    ....
    Ciao,

    evidentemente non hai letto il regolamento del forum
    Netiquette - MasterDrive.it Wiki
    ;

    rammenta per il futuro che qui il cross posting selvaggio non è ammesso.

    Query con due count | HTML.it forum
    ℹ️ Leggi di più su sspintux ...

  8. #8
    L'avatar di +m+
    +m+
    +m+ non è in linea Scribacchino
    Vedo un pochino diciamo così di "confusione".
    Se effettivamente vuoi i 6 mesi precedenti alla data odierna (come sembra di arguire nel primo post) puoi usare una differenza di date rispetto a NOW
    Secondariamente la SUM col case implica un full scan della tabella (cioè elaborazione di ogni riga), perdendo la possibilità di usare un indice ad alberto sulle date (l'utilità dipende dalla selettività, ovviamente, ma in questo caso è una selezione di tipo RANGE e quindi normalmente è efficiente).


    Se posso dare un consiglio, carica da qualche parte (file host) un dump della tabella (con dei dati non delicati!), e metti l'esempio del risultato che vuoi ottenere, poi è banale darti la soluzione.

  9. #9
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Chiuso per crossposting.

    TheTruster
    ℹ️ Leggi di più su TheTruster ...

Discussione chiusa

Potrebbero interessarti anche ...

  1. Query con COUNT e SUM
    Da pierovb nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 03-08-2020, 12:30
  2. Inserimento di una SOMMA in un Query con COUNT
    Da nembo nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 18-11-2014, 16:32
  3. [ACCESS] Query con condizione su COUNT()
    Da w_t nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 14-03-2011, 15:12
  4. [SQL]Count
    Da Uccio87 nel forum Altri Database Server
    Risposte: 10
    Ultimo Post: 05-02-2011, 20:31
  5. Query Con Count!
    Da logan nel forum PHP
    Risposte: 2
    Ultimo Post: 05-03-2006, 23:40