Query di raggruppamento

di
Anonimizzato15285
il
4 risposte

Query di raggruppamento

Buon giorno,
Sono nuovo di questo forum e non sono molto esperto di access.
Ho la necessità di eseguire un prospetto di assenze di settembre, ho fatto una tabella "elenco" con il campo [nome], una tab " dati " con i campi : [nome], [ dal giorno ] , [ al giorno], [tipo di assenza]; una tab " codici" con i campi [tipo di assenza], [codice].
Ho creato un query di nome "programmazione settembre" inserendo le tre tabelle mettendo in relazione il campo [nome] della tab "elenco"linea intera (in maniera da visualizzare i nomi indipendentemente dal fatto di avere avuto una programmazione),con la tab "dati" , il campo [tipo di assenza ]della tab "dati" con il campo [ tipo di assenza] della tab " codici" relazione 1a molti in maniera da visualizzare solo il codice dell'assenza. In seguito ho creato i campi [01],[02], [ 03 ] ecc.ecc. Fino al [30] ( il mese di settembre) inserendo nel campo [01] l'espressione : iif(#01/09/2014# between [dal giorno] and [al giorno];[codice];null), nel campo [02]: iif(#02/09/2014# between [dal giorno] and [al giorno];[codice];null) così per tutti i campi sino al [30] in maniera da visualizzare in base agli inserimenti gli intervalli di tempo con i relativi codici. Fino a qui tutto ok , il problema arriva quando la stessa persona fa 2 o più inserimenti perché nell'elenco viene visualizzato tre volte e io ho la necessità di visualizzare i nomi un sola volta e i vari intervalli di tempo su una unica riga tipo ad esempio : Giovanni 01 r 02 r 03 r 08 q 09q 10q 17 l 18 l e non Giovanni 01r 02 r 03 r. Giovanni 08 q 09 q 10 q . Giovanni 17 l 18 l .
Ho provato a creare una query dalla query "programmazione settembre" inserendo so il campo [nome] e i campi [01], [02], ecc. E ho provato a mettere " raggruppamento" per vedere se era possibile raggruppare un solo nome e visualizzare tutti gli intervalli di tempo ma non c'è verso, Giovanni continuo a vederlo tre volte
Sapete darmi qualche dritta ? Scusate se il mio gergo non è molto tecnico ma sono un povero autodidatta grazie.

4 Risposte

  • Re: Query di raggruppamento

    Benvenuto nel forum.
    La struttura delle 3 tabelle mi sembra corretta. Non capisco perchè le metteresti in relazione soltanto nella finestra della visualizzazione struttura query. Non vorrei aver frainteso io. Le 3 tabelle devono essere correlate a monte già nella finestra Relazioni e così devono restare "per sempre". Nella query ti appariranno legato dai join in automatico.

    Hidargo6262 ha scritto:


    In seguito ho creato i campi [01],[02], [ 03 ] ecc.ecc. Fino al [30] ( il mese di settembre)
    Questo non mi è affatto chiaro. Mi suona errato pensare a 30 record.

    Tutto il resto, poi, non riesco più a seguirlo.
    Ogni Nome deve sempre comparire ogni giorno e dire se è Presente/Assente, in quest'ultimo caso anche MotivoAssenza?
    Oppure la tabella Dati contabilizza soltanto le Assenze con il Motivo?
  • Re: Query di raggruppamento

    No i record non sono 30 ma 1 solo per nome esempio :
    Giovanni dal giorno, al giorno, tipo di assenza ,codice, 01,02,03,.........30 in pratica tutto in un unica riga,ogni riga un nome.
    Io ho la necessità di sapere avendo un elenco, che tizio dal giorno al giorno è di recupero,(r) , dal giorno al giorno è in ferie (f),dal giorno al giorno è di servizio (s) .
    La tabella dati sarebbe fatta così :
    [nome] [dal giorno ] [al giorno] [tipo di assenza]
    ------------------------------------------------------------------------------------------------------------------------
    Giovanni. 01/09/14. 02/09/14. Recupero.
    ------------------------------------------------------------------------------------------------------------------------
    Franco. 02/09/14. 05/09/14. Ferie.
    ---------------------------------------------------------------------------------------------------------------------------
    Mauro. 03/09/14. 07/09/14. Servizio.
    ---------------------------------------------------------------------------------------------------------------------------
    Giovanni. 05/09/14. 06/09/14. Ferie.
    ----------------------------------------------------------------------------------------------------------------------------
    La tabella elenco :
    [nome]
    ------------------------
    Giovanni.
    -------------------------
    Mauro.
    ------------------------
    Franco.
    -----------------------
    Francesco.
    -------------------------
    La tabella codice

    [tipo di assenza]. [codice]
    -------------------------------------------
    Ferire. F
    -------------------------------------------
    Servizio. S.
    -------------------------------------------
    Recupero. R.
    -------------------------------------------

    La query programmazione programmazione settembre viene fuori così :
    Nome. Dal giorno. Al giorno. Tipo di assenza codice 01 02. 03 04 05. 06 07
    ---------------------------------------------------------------------------------------------------------------------
    Giovanni 01/09/14 02/09/14 Recupero. R. R. R
    ----------------------------------------------------------------------------------------------------------------------
    Franco. 02/09/14 05/09/14 Ferie. F. F. F. F. F
    -------------------------------------------------------------------------------------------------------------------------
    Mauro. 03/09/14. 07/09/14 Servizio. S. S. S S. S S
    -------------------------------------------------------------------------------------------------------------------------
    Giovanni. 05/09/14 06/09/14 Ferie. F F. F
    ----------------------------------------------------------------------------------------------------------------------------
    Francesco.
    ----------------------------------------------------------------------------------------------------------------------------
    Ho messo solo sette giorni pre semplificare.
    Noterai che Francesco non ha nessun intervallo di date perché nella tabella dati non l'ho inserito in quanto lui a settembre sarà sempre presente. Il problema è che Giovanni lo vedi due volte perché sul suo nome ho messo due intervalli di tempo diversi.
    Ho provato a fare un altra query estraendo dalla prima query i campi
    Nome e 01,02,03,04,05,06,07 ecc ecc Mettendo totali e quindi raggruppa ma viene questo:

    Nome. 01. 02. 03. 04. 05. 06. 07. Ecc
    -------------------------------------------------------------------
    Giovanni. R. R
    -------------------------------------------------------------------
    Giovanni. F. F
    --------------------------------------------------------------------
    Franco. F. F. F. F
    --------------------------------------------------------------------
    Mauro. S. S. S. S. S
    ---------------------------------------------------------------------
    Francesco
    ----------------------------------------------------------------------
    Io invece voglio questo:

    Nome 01. 02. 03. 04. 04. 05. 06. 07
    ----------------------------------------------------------------------
    Giovanni. R. R. F. F
    -----------------------------------------------------------------------
    Franco. F. F. F. F. F
    -----------------------------------------------------------------------
    Mauro. S. S. S. S. S. S
    ------------------------------------------------------------------------
    Francesco
    ------------------------------------------------------------------------
    Come vedi Giovanni compare una volta sola ma con due intervalli di tempo nella stessa riga spero di essermi spiegato grazie
  • Re: Query di raggruppamento

    Io non gestirei mai una tabella così. Io penserei alla tabella Dati con questi campi:
    IDDato (contatore, chiave primaria)
    Data
    Nome
    TipoAssenza
    In questo modo sei vincolato a indicare ogni giorno cosa succede a Tizio o Caio qualora egli sia assente. In alternativa potresti pensare a questi campi:
    IDDato (contatore, chiave primaria)
    DataInizio
    DataFine
    Nome
    TipoAssenza

    Da questi assetti organizzativi di campi, puoi organizzare molteplici query a tuo piacimento.
    La prima soluzione sarebbe più noiosa per l'input, ma più agevole per future query.
    La seconda soluzione semplifica gli input, ma...forse...non saprei a dire il vero...potrebbe complicarti l'impostazione di query che dovrebbero sempre tenere conto di 2 campi (DataInizio e DataFine).
  • Re: Query di raggruppamento

    Ok provo affare come dici ,ti farò sapere grazie
Devi accedere o registrarti per scrivere nel forum
4 risposte