Visualizzare un conteggio anche se è uguale a "0"

di il
19 risposte

Visualizzare un conteggio anche se è uguale a "0"

Salve a tutti.
Sto costruendo un database e avrei bisogno di un report che visualizzasse il conteggio di record anche quando quelli appartenenti ad una determinata categoria fossero pari a zero.
Ho costruito una query che conta i record ma, appunto, non sono capace di dire ad Access 2007 di inserire lo zero quando il criterio non viene soddisfatto.
Per favore, mi potete spiegare come si fa?

Grazie.

19 Risposte

  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    ...Ho costruito una query che conta i record ma, appunto, non sono capace di dire ad Access 2007 di inserire lo zero quando il criterio non viene soddisfatto...
    Illustraci la query, in particolare la sua sintassi SQL, e vediamo cosa si può fare.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Illustraci la query, in particolare la sua sintassi SQL:

    la query conta i record che appartengono a 4 aulss e ne calcola la % rispetto al totale: aulss 10, aulss 12, aulss 13 e aulss 14.
    La sintassi è la seguente:

    SELECT [Prospetto statistico - 25].[ConteggioDiCognome e nome], ([ConteggioDiCognome e nome]*100)/[Prospetto statistico - 4]![Totale utenti] AS [% utenti del totale], [Prospetto statistico - 25].[ConteggioDiAUSSL 10], ([ConteggioDiAUSSL 10]*100)/[ConteggioDiCognome e nome] AS [% utenti Aulss 10], [Prospetto statistico - 25].[ConteggioDiAUSSL 12 Veneziana], ([ConteggioDiAUSSL 12 Veneziana]*100)/[ConteggioDiCognome e nome] AS [% utenti Aulss 12 Veneziana], [Prospetto statistico - 25].[ConteggioDiAUSSL 13], ([ConteggioDiAUSSL 13]*100)/[ConteggioDiCognome e nome] AS [% utenti Aulss 13], [Prospetto statistico - 25].[ConteggioDiAUSSL 14], ([ConteggioDiAUSSL 14]*100)/[ConteggioDiCognome e nome] AS [% utenti Aulss 14]
    FROM [Prospetto statistico - 25], [Prospetto statistico - 4]
    GROUP BY [Prospetto statistico - 4].[Totale utenti], [Prospetto statistico - 25].[ConteggioDiCognome e nome], [Prospetto statistico - 25].[ConteggioDiAUSSL 10], [Prospetto statistico - 25].[ConteggioDiAUSSL 12 Veneziana], [Prospetto statistico - 25].[ConteggioDiAUSSL 13], [Prospetto statistico - 25].[ConteggioDiAUSSL 14];

    Sono un neofita di Access.

    Grazie.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    ...la query conta i record che appartengono a 4 aulss e ne calcola la % rispetto al totale: aulss 10, aulss 12, aulss 13 e aulss 14...
    Avrei bisogno anche di conoscere anche la struttura di [Prospetto statistico - 25] e [Prospetto statistico - 4]... la faccenda è più impegnativa di quanto pensavo. Forse, e sottolineo forse, bisogna cambiare l'approccio delle query di partenza per ottenere anche i valori zero, ma aspetto di vederle. Se [Prospetto statistico - 25] e [Prospetto statistico - 4] si basano a loro volta su altre query, pubblica anche quelle.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Vorrei capirci qualcosa anch'io. Non so usare SQL, ma una descrizione più terra terra potrebbe aiutarmi.
    Potresti descrivere dettagliatamente tutte le tabelle con nomi campo e relazioni?
    Poi mi dici esattamente su quale campo vuoi quello che hai chiesto?
    Sii coerente con i nomi campo, alcune volte hai scritto "aulss", altre "AUSSL".
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Vorrei sistemare l'incongruenza segnalatami da OsvaldoLaviosa.

    Grazie.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    Vorrei sistemare l'incongruenza segnalatami da OsvaldoLaviosa.
    Grazie.
    Finto problema, visto che AUSSL è sempre inserito nel nome del campo mentre Aulss è solo negli alias:
    As [% utenti Aulss xx]
    Che poi per chiarezza sia meglio usare sempre la stessa dicitura posso essere d'accordo ma non è certo un'incongruenza di ostacolo ad ottenere quanto volevi all'inizio.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Se si tratta più di un aspetto formale che sostanziale, allora pubblico la sintassi delle query, a questo punto la 25, la 24 e le query collegate:

    Prospetto statistico 25
    SELECT Count([Prospetto statistico - 24].[Cognome e nome]) AS [ConteggioDiCognome e nome], Count([Prospetto statistico - 24].[AUSSL 10]) AS [ConteggioDiAUSSL 10], Count([Prospetto statistico - 24].[AUSSL 12 Veneziana]) AS [ConteggioDiAUSSL 12 Veneziana], Count([Prospetto statistico - 24].[AUSSL 13]) AS [ConteggioDiAUSSL 13], Count([Prospetto statistico - 24].[AUSSL 14]) AS [ConteggioDiAUSSL 14]
    FROM [Prospetto statistico - 24], [Prospetto statistico - 15], [Prospetto statistico - 4];

    Prospetto statistico 24
    TRANSFORM Count([Prospetto statistico - 14].[Data comunicazione avvio procedimento]) AS [ConteggioDiData comunicazione avvio procedimento]
    SELECT [Prospetto statistico - 14].[Cognome e nome], Count([Prospetto statistico - 14].[Data comunicazione avvio procedimento]) AS [Totale di Data comunicazione avvio procedimento]
    FROM [Prospetto statistico - 14]
    GROUP BY [Prospetto statistico - 14].[Cognome e nome]
    PIVOT [Prospetto statistico - 14].AUSSL;

    Prospetto statistico 14
    SELECT [Prospetto statistico - 13].[Data comunicazione avvio procedimento], [Prospetto statistico - 13].[Cognome e nome], [Prospetto statistico - 13].[Tipo di disabilità], [Prospetto statistico - 13].Plurihandicap, [Prospetto statistico - 13].[Tipologia della scuola], [Prospetto statistico - 13].AUSSL
    FROM [Prospetto statistico - 13]
    WHERE ((([Prospetto statistico - 13].[Data comunicazione avvio procedimento]) Between #9/13/2013# And #9/15/2014#));

    Prospetto statistico 4
    SELECT Sum([Prospetto statistico - 3].[Utenti per tipologia di scuola]) AS [Totale utenti]
    FROM [Prospetto statistico - 3];

    Prospetto statistico 3
    TRANSFORM Count([Prospetto statistico - 2].[Cognome e nome]) AS [ConteggioDiCognome e nome]
    SELECT [Prospetto statistico - 2].[Tipologia della scuola], Count([Prospetto statistico - 2].[Cognome e nome]) AS [Utenti per tipologia di scuola]
    FROM [Prospetto statistico - 2]
    GROUP BY [Prospetto statistico - 2].[Tipologia della scuola]
    PIVOT [Prospetto statistico - 2].AUSSL;

    Grazie.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    Se si tratta più di un aspetto formale che sostanziale...
    solo di "estetica", cioè come vuoi che venga identificato il campo calcolato. Per il resto... adesso ci sono elementi per iniziare a ragionarci.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    ... allora pubblico la sintassi delle query, a questo punto la 25, la 24 e le query collegate:...
    Prima che mi ti chieda di farci del male chiedendo di pubblicare anche la struttura della query [Prospetto statistico - 2] (scherzo, ovviamente), potresti darci qualche dritta su quali campi o risultati potrebbero assumere valore zero e che invece vorresti che apparissero nella query finale? Così forse riesco a concentrare meglio l'attenzione senza perdermi tra i vari "prospetti statistici". Mi spiego: mi sarei aspettato di trovare qualche INNER JOIN nelle query, da trasformare in LEFT JOIN, per ottenere comunque tutti i valori di una delle due tabelle, cosa che spesso permette di ottenere "zeri" che altrimenti non ci sarebbero. Invece sono tutte query tranquille, anche se è un po' un azzardo definire così quelle a campi incrociati (almeno per me). Quindi sto brancolando nel buio. Chi ha fatto 30 può far 31: a questo punto pubblica anche [Prospetto statistico - 2] (ormai l'ho detto) e vediamo se la situazione si fa più chiara.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    1. I campi o i risultati che potrebbero assumere valore "zero" e che vorrei che apparissero nella query finale sono il numero di utenti per Aulss, cioè: considerato un determinato periodo di tempo, quanti sono gli utenti per Aulss 10, Aulss 12, Aulss 13 e Aulss 14? E' possibile far sì che compaia "zero" in corrispondenza di Aulss quando non ci sono utenti?
    2. Non so cosa siano gli INNER JOIN e i LEFT JOIN (ne cercherò il significato).
    3. Il Prospetto statistico - 2 è stato ricavato dal Prospetto statistico - 1 mediante la scelta di un determinato valore nel campo Anno scolastico; non trovo traccia di linguaggio SQL, ma riporto quello che leggo: Lookup_Anno scolastico. Il Prospetto staticio - 1, invece, contiene questo:
    SELECT Utente.[Cognome e nome], Utente.[Tipo di disabilità], Utente.Plurihandicap, Scuola.[Tipologia della scuola], AUSSL.AUSSL, Utente.[Data comunicazione avvio procedimento]
    FROM AUSSL INNER JOIN (Scuola INNER JOIN Utente ON Scuola.ID = Utente.[Nome della scuola]) ON AUSSL.ID = Utente.AUSSL
    GROUP BY Utente.[Cognome e nome], Utente.[Tipo di disabilità], Utente.Plurihandicap, Scuola.[Tipologia della scuola], AUSSL.AUSSL, Utente.[Data comunicazione avvio procedimento];


    Grazie.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    1. I campi o i risultati che potrebbero assumere valore "zero" e che vorrei che apparissero nella query finale sono il numero di utenti per Aulss, cioè: considerato un determinato periodo di tempo, quanti sono gli utenti per Aulss 10, Aulss 12, Aulss 13 e Aulss 14? E' possibile far sì che compaia "zero" in corrispondenza di Aulss quando non ci sono utenti?...
    Soluzione volante: [prospetto statistico - 25] si basa su [prospetto statistico - 24]. Modificando in questo modo [prospetto statistico - 24] come segue dovresti riuscire ad ottenere sul 25 anche "gli zeri".
    TRANSFORM Nz(Count([Prospetto statistico - 14].[Data comunicazione avvio procedimento]), 0) AS [ConteggioDiData comunicazione avvio procedimento]
    SELECT [Prospetto statistico - 14].[Cognome e nome], Count([Prospetto statistico - 14].[Data comunicazione avvio procedimento]) AS [Totale di Data comunicazione avvio procedimento] 
    FROM [AUSSL] LEFT JOIN [Prospetto statistico - 14] ON [AUSSL].AUSSL = [Prospetto statistico - 14].AUSSL 
    GROUP BY [Prospetto statistico - 14].[Cognome e nome] 
    PIVOT [Prospetto statistico - 14].AUSSL;
    Prima di partire con le spiegazioni dimmi se funziona.
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Non funziona, perchè non calcola che per l'Aulss 14 il valore è "zero" (lo so con certezza perché so con certezza che non ci sono record relativi all'Aulss 14).
    Infatti, la query 25 non si apre e compare il messaggio seguente: "Il modulo di gestione di database Microsoft Access non riconosce '[Prospetto statistico - 24].[AUSSL 14]' come nome di campo o espressione valida".

    Ma grazie lo stesso per la disponibilità e la tempestività!
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Mifido ha scritto:


    Non funziona, perchè non calcola che per l'Aulss 14 il valore è "zero" (lo so con certezza perché so con certezza che non ci sono record relativi all'Aulss 14).
    Infatti, la query 25 non si apre e compare il messaggio seguente: "Il modulo di gestione di database Microsoft Access non riconosce '[Prospetto statistico - 24].[AUSSL 14]' come nome di campo o espressione valida".Ma grazie lo stesso per la disponibilità e la tempestività!
    E prospetto statistico 24 modificato come risulta? mostra lo zero dove dovrebbe?
  • Re: Visualizzare un conteggio anche se è uguale a "0"

    Direi di sì, grazie.
    Comunque, sperando di non approfittarmi della disponibilità altrui, vorrei ribadire qual è il mio obiettivo: avere un prospetto (da usare come base per un report) che restituisca i record che rientrano in un dato intervallo di tempo e che appartengano a 4 Aulss, ottenendo "zero" laddove non ci fossero record.

    Ringrazio ancora, perchè, comunque, sto imparando tanto.
Devi accedere o registrarti per scrivere nel forum
19 risposte