+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Access/Query] query multipla/nidificata

  1. #1
    L'avatar di liodevac
    liodevac non è in linea Scolaretto
    Luogo
    Puglia
    Post
    387

    [Access/Query] query multipla/nidificata

    salve ho attualmente una sequenza di query di query che è sicuramente complessa in un modo inutile ed ho bisogno di semplificare e chiedo suggerimenti.

    oggetto interessato: 1 tabella di fatture con campi (indico solo gli essenziali per la mia ricerca):
    - data
    - TIPO (testo 1 carattere: da elenco di 3 valori A, B,C)
    - RIF (testo 1 carattere: da elenco di 2 valori F, T)
    - totale fattura

    la mia ricerca: sapere per ogni data (insomma per ordine cronologico) quante fatture (e somma dei totali) esistono per i vari RIF - TIPO, ed avere il risultato da unica query in modo da avere tante righe per quante date e in ogni riga tante colonne con:
    - numero fatture con RIF = F
    - numero fatture con RIF = T
    - numero fatture con TIPO = A
    - numero fatture con TIPO = B
    - numero fatture con TIPO = C

    il mio problema:
    - ho elaborato le singole query (5) e fin qui ok;
    - ho elaborato una query basata su 5 query e ancora + o meno ok ma è complessa e avendo a che fare con centinaia di record (che poi diventeranno migliaia)...;
    :: mi serve una query unica basata su tabella.

    Suggerimenti saranno ben accetti!

  2. #2
    L'avatar di Gregorio
    Gregorio non è in linea Scolaretto
    Post
    493
    Nel link di seguito trovi molti esempi per la ricerca e/o filtri su tabelle/qry.
    E' una sezione che raggruppa solo esempi di access trovati in internet.
    Quello cerchi tu si trova pagina 1 rigo 7
    Sezione access
    Fammi sapere
    Ciao

  3. #3
    L'avatar di liodevac
    liodevac non è in linea Scolaretto
    Luogo
    Puglia
    Post
    387
    ok greg ho trovato diverse cose interessanti su sito e ne ho prelevate molte.
    un aiuto specifico però ho bisogno per semplificare una query di query

    vi posto sql di singole query
    1) - una semplice selezione dati da tabella fatture:
    codice:
     
    SELECT FATTURE.ID_Fattura, FATTURE.Numero_rif, FATTURE.tipocontrollo, FATTURE.tipodoc, FATTURE.originedati, FATTURE.Fornitore, FATTURE.Anno, FATTURE.Mese, FATTURE.Totale
    FROM FATTURE;
    2) - una query per contare quante fatture tipo F e dati T;
    codice:
     SELECT FATTURE.Anno, FATTURE.Mese, Count(FATTURE.ID_Fattura) AS ConteggioDiID_Fattura, Sum(FATTURE.Totale) AS SommaDiTotale, FATTURE.tipocontrollo, FATTURE.originedati, FATTURE.tipodoc
    FROM FATTURE
    GROUP BY FATTURE.Anno, FATTURE.Mese, FATTURE.tipocontrollo, FATTURE.originedati, FATTURE.tipodoc
    HAVING (((FATTURE.tipocontrollo)="F") AND ((FATTURE.originedati)="T"));
    3) - una query per contare quante fatture tipo R e dati T;
    codice:
     
    SELECT FATTURE.Anno, FATTURE.Mese, Count(FATTURE.ID_Fattura) AS ConteggioDiID_Fattura, FATTURE.Totale, FATTURE.tipocontrollo, FATTURE.originedati, FATTURE.tipodoc
    FROM FATTURE
    GROUP BY FATTURE.Anno, FATTURE.Mese, FATTURE.Totale, FATTURE.tipocontrollo, FATTURE.originedati, FATTURE.tipodoc
    HAVING (((FATTURE.tipocontrollo)="R") AND ((FATTURE.originedati)="T"));
    4) - - una query per contare quante fatture tipo O e dati F;
    codice:
     
    SELECT FATTURE.Anno, FATTURE.Mese, Count(FATTURE.ID_Fattura) AS ConteggioDiID_Fattura, Sum(FATTURE.Totale) AS SommaDiTotale, FATTURE.tipocontrollo, FATTURE.originedati, FATTURE.tipodoc
    FROM FATTURE
    GROUP BY FATTURE.Anno, FATTURE.Mese, FATTURE.tipocontrollo, FATTURE.originedati, FATTURE.tipodoc
    HAVING (((FATTURE.tipocontrollo)="O") AND ((FATTURE.originedati)="F"));
    5) INFINE - una query sulle query precedenti per contare tutto raggruppando in base all'anno-mese
    codice:
    SELECT FATTURE.Anno, FATTURE.Mese, Count(FATTURE.ID_Fattura) AS ConteggioDiID_Fattura1, FE_controllo_CFd.ConteggioDiID_Fattura AS CONTEGGIO4_cfd, Nz(FE_controllo_CFd.SommaDiTotale,0) AS TOTALE4_ffd, FE_controllo_COf.ConteggioDiID_Fattura AS CONTEGGIO7_cof, Nz(FE_controllo_COf.SommaDiTotale,0) AS TOTALE7_fof, FE_controllo_CRd.ConteggioDiID_Fattura AS CONTEGGIO9_crd, Nz([FE_controllo_CRd].[Totale],0) AS TOTALE9_cof
    FROM ((FATTURE LEFT JOIN FE_controllo_CRd ON (FATTURE.Anno = FE_controllo_CRd.Anno) AND (FATTURE.Mese = FE_controllo_CRd.Mese)) LEFT JOIN FE_controllo_COf ON (FATTURE.Mese = FE_controllo_COf.Mese) AND (FATTURE.Anno = FE_controllo_COf.Anno)) LEFT JOIN FE_controllo_CFd ON (FATTURE.Mese = FE_controllo_CFd.Mese) AND (FATTURE.Anno = FE_controllo_CFd.Anno)
    GROUP BY FATTURE.Anno, FATTURE.Mese, FE_controllo_CFd.ConteggioDiID_Fattura, Nz(FE_controllo_CFd.SommaDiTotale,0), FE_controllo_COf.ConteggioDiID_Fattura, Nz(FE_controllo_COf.SommaDiTotale,0), FE_controllo_CRd.ConteggioDiID_Fattura, Nz([FE_controllo_CRd].[Totale],0);
    in pratica ho bisogno che per ogni riga (mese/anno) sapere quante fatture in tutto, quante dei vari tipi combinati e rispettivi totali.

    sono sicuro che esiste una strada più breve che funziona: sono graditi suggerimenti, grazie tantissimo.

  4. #4
    L'avatar di liodevac
    liodevac non è in linea Scolaretto
    Luogo
    Puglia
    Post
    387

    info

    buongiorno, chiedo info:
    se quanto ho indicato non è sufficiente per far comprendere il mio problema vorrei allegare file .mdb contenente la tabella e le query "incriminate"...però davvero nella visualizzazione per scrivere messaggio che ho davanti adesso mentre scrivo non trovo la funzione "allega file"! come faccio?

  5. #5
    L'avatar di Gregorio
    Gregorio non è in linea Scolaretto
    Post
    493
    Puoi postare il file tramite http:Free File Hosting e vedrai che riceverai un aiuto.
    Ciao

  6. #6
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao
    non ho ben chiaro se il raggruppamento, a parte la data, deve avverire per "coppie" di RIF e TIPO.
    Se così fosse, la query si ridurrebbe a:
    codice:
    SELECT TuaTab.data, Count(TuaTab.id) AS num_Fat, TuaTab.tipo, TuaTab.rif, Sum(TuaTab.totaleFattura) AS SommaFatture
    FROM TuaTab
    GROUP BY TuaTab.data, TuaTab.tipo, TuaTab.rif
    ORDER BY TuaTab.data;
    ... ma forse non è quello che vuoi.

    saluti

  7. #7
    L'avatar di liodevac
    liodevac non è in linea Scolaretto
    Luogo
    Puglia
    Post
    387
    grazie a domenico per l'interessamento, ma ciò di cui ho bisogno è più complesso, allora per chi volesse darmi un consiglio, ecco file di esempio:

    http://noilgreen.xoom.it/virgiliowiz.../fatture_q.rar

    aggiungo che non si tratta di elaborare una query a campi incrociati che pure in parte mi darebbe i risultati che cerco, ma una sequenza di record in cui (come in query generale in file esempio) in ogni riga anno-mese siano riportati i conteggi di quante fatture per ogni combinazione e la loro somma.

    spero sia più chiaro guardando il file.

  8. #8
    L'avatar di liodevac
    liodevac non è in linea Scolaretto
    Luogo
    Puglia
    Post
    387
    se ancora la mia richiesta risulta poco comprensibile, allora provo a scrivere in modo più semplificato il mio problema:

    tabella mia: FATTURE
    campi:
    IDFattura (chiave)
    Anno (testo - 4 caratteri)
    Mese (numero intero - 2 cifre)
    tipodocumento (elenco valori a scelta obbligata fra 3 possibilità: A , B , C)
    riferimento_processo (elenco valori a scelta obbligata fra 2 possibilità: F , T)
    Imponibile (numerico - valuta)

    tutte le combinazioni possibili di 'tipodocumento' e 'riferimento_processo' possono essere presenti per ogni anno/mese, e ognuna anche più volte nello stesso anno/mese.

    QUERY:
    A) so bene come ottenere con singola query il conteggio di quante fatture esistano (e la somma del loro totale) PER OGNI SINGOLA COMBINAZIONE di casi possibili per OGNI ANNO/MESE.
    B) dopo aver realizzato il punto A) ho costruito una query basata su tutte le query del punto A)
    >> PER OTTENERE per ogni riga anno/mese tutti i conteggi.

    il mio problema:
    costruire 1 SOLA query che mi restituisca tutto

    le combinazioni per completezza sono ( riferimento e tipo ):
    1) fatture con F - A
    2) fatture con F - B
    3) fatture con F - C
    4) fatture con T - A
    5) fatture con T - B
    6) fatture con T - C

    quindi desidero visualizzare in un'unica riga ad esempio per giugno 2010 quante fatture (e totale, e magari imponibile dell'ultima inserita) ci sono delle combinazioni 1-2-3-4-5-6.
    ho sottolineato unica riga in quanto non è una query a campi incrociati quella che sto cercando.

    grazie a chi vorrà cimentarsi e aiutarmi.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi