Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

Query Unione non prende tutti i record

  1. #1
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    Ciao a tutti,
    ho un problema con una UNION QUERY.
    Ho diverse tabelle nel DB, due di queste sono legate a delle commissioni che ci vengono riconosciute.
    Una è lo storico degli anni precededenti (cCommissioniStorico) ed un'altra è il dettaglio dell'anno in corso(cCommissioniDettaglio).

    I campi delle due query sono i seguenti:
    cCommissioniStorico: periodoStorComm, cauStorComm, tipologiaStorComm, accorpTipStorComm, importoStorComm
    cCommissioniDettaglio: idDettComm, idMaster, dataValDettComm, dataRegDettComm, impoDettComm, cauDettComm, tipologiaDettComm, accorpTipDettComm

    Per evitare di fare "troppi" casini, ho creato le due query di selezione ed ho verificato che il numero di record che selezionasse fosse corretto con quanto presente nelle rispettive tabelle e fin qui tutto bene, al che ho pensato copio i due SQL e li unisco con UNION, quindi ho creato il seguente SQL:

    SELECT cCommissioniDettaglio.dataRegDettComm, cCommissioniDettaglio.cauDettComm, cCommissioniDettaglio.tipologiaDettComm, cCommissioniDettaglio.accorpTipDettComm, cCommissioniDettaglio.impoDettComm
    FROM cCommissioniDettaglio
    UNION
    SELECT cCommissioniStorico.periodoStorComm, cCommissioniStorico.cauStorComm, cCommissioniStorico.tipologiaStorComm, cCommissioniStorico.accorpTipStorComm, cCommissioniStorico.importoStorComm
    FROM cCommissioniStorico;
    
    Però il risultato che ricavo non è corretto, i record estratti non sono la somma dei due ma a questi ne mancano circa 6000 che sono nel Dettaglio, lo storico lo estrae tutto e correttamente.

    qualcuno sa per caso dirmi dove sbaglio e soprattutto come poter capire perché nella UNION alcuni record vengono saltati, mentre nella SELECT (singola) vengono correttamente estratti?

    Un'altra domanda, come posso passare un parametro alla query, una volta sistemato il problema esposto, per modificare la cCommissioniDettaglio.dataRegDettComm alla fine del mese e non alla data specifica (es: 10/01/2021 e il 27/01/2021 dovranno avere come valore 31/01/2021)-

    Ringrazio tutti per l'aiuto che riuscirete a darmi in base alle poche e confuse info che ho fornito.
    ℹ️ Leggi di più su Elimar ...

  2. #2
    Quote Originariamente inviato da Elimar Visualizza il messaggio
    qualcuno sa per caso dirmi dove sbaglio
    Un tentativo: prova ad usare degli alias per il nome dei campi, ovviamente uguali nelle due query.
    Questo campo [cCommissioniDettaglio.dataRegDettComm] è dello stesso tipo di [cCommissioniStorico.periodoStorComm]?

  3. #3
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    Si tendenzialmente ho utilizzato nomi "simili", se ho capito bene mi suggerisci di fare:
    SELECT cCommissioniDettaglio.dataRegDettComm as Data, cCommissioniDettaglio.cauDettComm as Causale, cCommissioniDettaglio.tipologiaDettComm as Tipo, cCommissioniDettaglio.accorpTipDettComm as AccorpaTipo, cCommissioniDettaglio.impoDettComm as Importo
    FROM cCommissioniDettaglio
    UNION
    SELECT cCommissioniStorico.periodoStorComm as Data, cCommissioniStorico.cauStorComm as Causale, cCommissioniStorico.tipologiaStorComm as Tipo, cCommissioniStorico.accorpTipStorComm as AccorpaTipo, cCommissioniStorico.importoStorComm as Importo
    FROM cCommissioniStorico;
    
    é più carino, ma non ha risolto il problema, cmq grazie per lo spunto di "perfezionamento" intestazioni
    ℹ️ Leggi di più su Elimar ...

  4. #4
    Quote Originariamente inviato da Elimar Visualizza il messaggio
    Si tendenzialmente ho utilizzato nomi "simili", se ho capito bene mi suggerisci di fare:
    Chiamare [Data] un campo (anche come alias) non è consigliabile. Non è una parola riservata ma si presta ad automatismi di traduzione con Date dai quali stare alla larga.
    Il suggerimento l'hai capito ma da come hai risposto non ha dato buon esisto.
    Parlavo del contenuto dei primi due campi delle query, si tratta di date per entrambi, quindi.
    Rileggendo il thread però... subito parli di tabelle, poi di query. cCommissioniStorico e cCommissioniDettaglio sono tabelle o query?
    Per curiosità, invece di UNION metti UNION ALL

  5. #5
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    sono tabelle ....
    Cmq GRAZIE infinite, ora andrò a studiare la differenza tra UNION e UNION ALL (in modo da capire perché alcuni records non piacciono alla prima.

    Faccio lo sfacciato, per caso hai qualche suggerimento anche per il mio secondo quesito

    Un'altra domanda, come posso passare un parametro alla query, una volta sistemato il problema esposto, per modificare la cCommissioniDettaglio.dataRegDettComm alla fine del mese e non alla data specifica (es: 10/01/2021 e il 27/01/2021 dovranno avere come valore 31/01/2021)-

    Ringrazio tutti per l'aiuto che riuscirete a darmi in base alle poche e confuse info che ho fornito.
    ℹ️ Leggi di più su Elimar ...

  6. #6
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Ma le singole Query restituiscono il numero di Records atteso...?
    Per i parametri non ho ben capito a cosa ti stia riferendo... molto confondono i Parameters con la WHERE condition...
    In ogni caso devi Filtrare i dati nelle Singole SELECT in quanto la UNION unisce il risultato.

    UNION [ALL] Funziona un po come il DISTINCT... in relazione ai dati DOPPI... ovvero se ometti ALL puoi avere delle mancanze in caso di duplicati...
    https://www.fmsinc.com/microsoftacce...-all/index.htm
    ℹ️ Leggi di più su @Alex ...

  7. #7
    Ferrari_and non è in linea Scolaretto
    Breve sunto in inglese sul funzionamento di UNIOn
    https://www.w3schools.com/sql/sql_union.asp

  8. #8
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    Ciao Alex
    le singole select restituivano il numero di records corretti e ora anche la UNION ALL

    Sicuramente io sono uno che fa parecchia confusione, ma non penso sia questo il caso (almeno spero).

    Io devo fare in modo che al posto di 10/01/2021 e 27/01/2021 venga restituito 31/01/2021 .... mentre cercavo di spiegarti mi si è accesa una lampadina, la espongo così mi dite se corretto.
    Creo un campo calcolato dove inserisco qualcosa del genere:
    se(mese(cCommissioniDettaglio.dataRegDettComm)=12; Date(anno(cCommissioniDettaglio.dataRegDettComm);m ese(cCommissioniDettaglio.dataRegDettComm);31);Dat e(anno(cCommissioniDettaglio.dataRegDettComm);mese (cCommissioniDettaglio.dataRegDettComm)+1;1)-1)

    Può andare?
    ℹ️ Leggi di più su Elimar ...

  9. #9
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da Elimar Visualizza il messaggio
    Ciao Alex
    ...
    Io devo fare in modo che al posto di 10/01/2021 e 27/01/2021 venga restituito 31/01/2021 ....
    Questa frase che hai scritto sopra, significa che ti serve sempre l'ultimo giorno del mese...?
    Se fosse così...

    LastDayInMonth = Fix(DateSerial(year(dtmDate), Month(dtmDate) + 1, 0))
    
    ℹ️ Leggi di più su @Alex ...

  10. #10
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    è vero il DateSerial


    abbi pazienza, forse prima o poi riuscirò a ricordarmele tutte le cose che mi avete già insegnato o che ho trovato in rete.

    scusa ancora e soprattutto grazie
    ℹ️ Leggi di più su Elimar ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 16
    Ultimo Post: 31-05-2017, 08:57
  2. Access: Stampa unione del record corrente
    Da laser82 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 11-11-2014, 23:30
  3. [Word] Stampa Unione - Next e record vuoto
    Da Baphomet nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 27-03-2014, 00:50
  4. Articolo: [ACCESS] Query - Selezionare tutti i Record se il Criterio è Nullo
    Da @Alex nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 30-08-2011, 16:05
  5. [ACCESS VBA] Impossibile aggiornare tutti i record nella query
    Da DaitarnIII nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 24-05-2007, 19:27