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

Discussione: join query che restituisce campi vuoti a seconda se left o right quando non dovrebbe

  1. #1
    L'avatar di Tommy_G
    Tommy_G non è in linea Scribacchino
    Post
    996

    join query che restituisce campi vuoti a seconda se left o right quando non dovrebbe

    salute e tutti, sto impazzendo per cercare di capire perchè mettendo in jon due tabelle con due parametri identici ne restituisce solo uno a secondo se viene effettuata una left o una right
    nelle immagini si capisce meglio
    incassi vs SAP.jpg


    inutile dire che se scelgo di vedere solo i campi tra loro uguali non vedo nulla


    EDIT!
    mi accorgo ora che uno dei due importi ha il separatore delle migliaia

    eppure le rispettive tabelle hanno il medesimo formato numerico!

    posto la query completa
    codice:
    SELECT DISTINCT ImportSAP.[Data di reg#] AS [Dta Reg SAP],
                    ImportSAP.[Numero documento] AS [Num doc SAP],
                    ImportSAP.IMPORTO AS [importo SAP],
                    ImportSAP.Testo AS [Descrizione SAP],
                    ImportSAP.[Chiave di rif# 1 Numero assegno] AS [Assegno SAP],
                    Incassi_Fraudolenti_Compagnie_del_Gruppo.Beneficiario AS [Beneficiario db],
                    Incassi_Fraudolenti_Compagnie_del_Gruppo.Numero_assegno AS [Assegno db],
                    IIf([TblRecuperoSpese]![CheckUlteriori]=TRUE, "", Round([Incassi_Fraudolenti_Compagnie_del_Gruppo]![Importo], 2)) AS [Importo db],
                    Incassi_Fraudolenti_Compagnie_del_Gruppo.Data_emissione AS [Data emissione db],
                    IIf([TblRecuperoSpese]![CheckUlteriori]=TRUE, "", Round([Incassi_Fraudolenti_Compagnie_del_Gruppo]![Importo_Riaccreditato], 2)) AS [Importo riaccr db],
                    Year([Incassi_Fraudolenti_Compagnie_del_Gruppo].[Riaccredito_Banca]) AS [Anno Riaccredito db],
                    IIf([TblRecuperoSpese]![CheckUlteriori]=TRUE, "", Round([Incassi_Fraudolenti_Compagnie_del_Gruppo]![Importo_a_perdite], 2)) AS [Importo a perdite db],
                    TblRecuperoSpese.Recupero_Spese AS [Recupero spese db],
                    TblRecuperoSpese.Data_Recupero AS [Data rec spese db],
                    IIf([TblRecuperoSpese].[CheckUlteriori]=-1, "SI", "") AS [ulteriori recuperi]
    FROM ImportSAP
    LEFT JOIN (Incassi_Fraudolenti_Compagnie_del_Gruppo
               LEFT JOIN TblRecuperoSpese ON Incassi_Fraudolenti_Compagnie_del_Gruppo.Numero_assegno = TblRecuperoSpese.Id_Recupero) ON (ImportSAP.IMPORTO = Incassi_Fraudolenti_Compagnie_del_Gruppo.Importo)
    AND (ImportSAP.[Chiave di rif# 1 Numero assegno] = Incassi_Fraudolenti_Compagnie_del_Gruppo.Numero_assegno)
    WHERE (((ImportSAP.[Chiave di rif# 1 Numero assegno]) NOT LIKE "*A533P00004*"
            AND (ImportSAP.[Chiave di rif# 1 Numero assegno]) NOT LIKE "*saldo*"
            AND (ImportSAP.[Chiave di rif# 1 Numero assegno]) NOT LIKE "*incasso*"))
    ORDER BY ImportSAP.[Data di reg#];
    Ultima modifica di Tommy_G; 12-06-2019 14:35 

  2. #2
    Ferrari_and non è in linea Scolaretto
    Post
    103
    Ciao,
    ho dato una occhiata veloce alla query ma le tabelle lincate sono 3 non 2

    ImportSAP che in left join con le due tabelle Incassi_Fraudolenti_Compagnie_del_Gruppo e TblRecuperoSpese tra loro in left join

    Il problema potrebbe essere il risultato del left join di Incassi_Fraudolenti_Compagnie_del_Gruppo e TblRecuperoSpese hai provato a vedere solo quello che risultato ti da?

  3. #3
    L'avatar di Tommy_G
    Tommy_G non è in linea Scribacchino
    Post
    996
    Quote Originariamente inviato da Ferrari_and Visualizza il messaggio
    Ciao,
    ho dato una occhiata veloce alla query ma le tabelle lincate sono 3 non 2
    si , nell'immagine ho raffigurato un esempio semplificato con sole due tabelle (andavo per esclusione eliminando un campo alla volta) comunque, era come dici tu, ho risolto mettendo a monte una query (QjoinAssSAPeAssDB) che mette in join le prime due tabelle:
    codice:
    SELECT ImportSAP.[Data di reg] AS [Dta Reg SAP],
           ImportSAP.[Numero documento] AS [Num doc SAP],
           ImportSAP.IMPORTO AS [importo SAP],
           ImportSAP.Testo AS [Descrizione SAP],
           ImportSAP.Assegno AS [Assegno SAP],
           Incassi_Fraudolenti_Compagnie_del_Gruppo.Beneficiario AS [Beneficiario db],
           Incassi_Fraudolenti_Compagnie_del_Gruppo.Numero_assegno AS [Assegno db],
           Incassi_Fraudolenti_Compagnie_del_Gruppo.Data_emissione AS [Data emissione db],
           Year([Incassi_Fraudolenti_Compagnie_del_Gruppo].[Riaccredito_Banca]) AS [Anno Riaccredito db],
           Incassi_Fraudolenti_Compagnie_del_Gruppo.importo_a_perdite,
           Incassi_Fraudolenti_Compagnie_del_Gruppo.Importo_Riaccreditato,
           Incassi_Fraudolenti_Compagnie_del_Gruppo.Importo
    FROM ImportSAP
    LEFT JOIN Incassi_Fraudolenti_Compagnie_del_Gruppo ON ImportSAP.Assegno = Incassi_Fraudolenti_Compagnie_del_Gruppo.Numero_assegno
    ORDER BY ImportSAP.[Data di reg];

    successivamente ho creato una seconda query definitiva con la terza (TblRecuperoSpese) in sintesi invece di tre tabelle ora ho una query in join con la tabella "TblRecuperoSpese"

    codice:
    SELECT QjoinAssSAPeAssDB.[Dta Reg SAP],
           QjoinAssSAPeAssDB.[Num doc SAP],
           IIf([ulteriori recuperi]="SI", "", [QjoinAssSAPeAssDB]![Importo SAP]) AS importoSAP,
           QjoinAssSAPeAssDB.[Descrizione SAP],
           QjoinAssSAPeAssDB.[Assegno SAP],
           QjoinAssSAPeAssDB.[Beneficiario db],
           QjoinAssSAPeAssDB.[Assegno db],
           IIf([ulteriori recuperi]="SI", "", [Incassi_Fraudolenti_Compagnie_del_Gruppo]![Importo]) AS [Importo db],
           QjoinAssSAPeAssDB.[Data emissione db],
           IIf([ulteriori recuperi]="SI", "", [Incassi_Fraudolenti_Compagnie_del_Gruppo]![Importo_Riaccreditato]) AS [Importo riaccr db],
           QjoinAssSAPeAssDB.[Anno Riaccredito db],
           IIf([ulteriori recuperi]="SI", "", [Incassi_Fraudolenti_Compagnie_del_Gruppo]![Importo_a_perdite]) AS [Importo a perdite db],
           TblRecuperoSpese.Recupero_Spese AS [Recupero spese db],
           TblRecuperoSpese.Data_Recupero AS [Data rec spese db],
           IIf([TblRecuperoSpese].[CheckUlteriori]=-1, "SI", "") AS [ulteriori recuperi]
    FROM QjoinAssSAPeAssDB
    LEFT JOIN TblRecuperoSpese ON QjoinAssSAPeAssDB.[Assegno SAP] = TblRecuperoSpese.Id_Recupero;

+ Rispondi al Thread

Permessi di invio

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