Confrontare valori simili di due campi uguali di 2 tabelle

di il
16 risposte

Confrontare valori simili di due campi uguali di 2 tabelle

Buongiorno ,

Volevo sapere se e come posso confrontare con una query due tabelle 
tramite stesso campo " Codice"  simile ma non uguale

SOSTANZIALMENTE i primi 4/5 numeri sono uguali 
TIPO :
tabella A   028480      tabella  B   028480B
tabella A   043296      tabella  B   043296C
tabella A   1111106    tabella  B   1111106C
tabella A   2715810    tabella  B   2715810.10

La tabella A ha il campo " Codice "  con 10.500  record 
La tabella B ha il campo " Codice "  con 6.500  record

VORREI  creare una tabella con entrambi i campi " Codice"
che hanno lo stesso valore confrontato sui primi 4/5 caratteri

Grazie

16 Risposte

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Ciao,

    non proprio molto chiara l'analisi che hai fatto.

    Potrebbe lasciare molte casistiche non considerate.

    In generale se stabilisci che i primi 4 caratteri devono essere uguali e la regola vale per tutti i records, allora per entrambe le tabelle prendi le fields Codice, crei un sottocampo oppure leggi i primi 4 caratteri a Sinistra e li confronti con l'operatore Uguale.

    Se corrispondono allora aggiungi nella nuova tabella i due nuovi records che hanno una corrispondenza.

    Esempio:

    SELECT A.Codice AS Codice_A, B.Codice AS Codice_B
    ...
    ...
    ...
    INNER JOIN TabellaB B ON LEFT(A.Codice, 4) = LEFT(B.Codice, 4);
  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Ciao

    Sicuramente mi sono spiegato male  questo sotto è quanto ho fatto ci sono quasi ma non ancora datemi una mano  

    grazie

    Giuseppe

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Ciao

    Sicuramente mi sono spiegato male  questo sotto è quanto ho fatto ci sono quasi ma non ancora datemi una mano  

    grazie

    Giuseppe

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Quello che vorresti fare ritengo che non sia fattibile con una semplice query ...

    Già guardando quello che vorresti ottenere si evidenzia che confrontare per i primi 5 caratteri non ti garantisce l'univocità (o se preferisci il corretto abbinamento dei records), i records n° 1,2,6,7,8 condividono i primi 7 caratteri.

    Se poi proprio vuoi provare a far un tentativo con le query devi fare il join con la parte parziale di chiave (i famosi primi 5 caratteri) e dubito che il left o right join ti possa agevolare.

    Se poi ti interessano solo i primi x caratteri (pare 5) dei codici di entrambe le tabelle potresti fare in questo modo :

    - tabella A -> raggruppi i records per left(codice, 5) e crei una tabella temporanea

    - tabella B -> raggruppi i records per left(codice, 5) e crei una tabella temporanea

    - metti in join (equi join) le tabelle temporanee e consideri solo i record uguali (sempre che sia questo che poi vuoi fare/ottenere)

    ... che poi sostanzialmente è quello che ti ha già consigliato Franco.

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    03/02/2025 - AMRSNC66 ha scritto:

    Ciao

    Sicuramente mi sono spiegato male  questo sotto è quanto ho fatto ci sono quasi ma non ancora datemi una mano  

    grazie

    Giuseppe

    perchè right join? sai cosa significa?

    left join prende tutti i record di a e aggiunge quelli in comune con b

    right join prende tutto da b e quelli in comune di a

    inner join prende solo quelli in comune tra le due tabelle...

    supponiamo che la tabella clienti ha come campi anche l'indirizzo; 

    supponiamo che ho una tabella indirizzi per gli ulteriori indirizzi;

    left join: 

    voglio tutti i clienti e se ci sono altri dati aggiutivi (es. recapiti oltre il primo)

    inner join:

    voglio solo i clienti che hanno più di un recapito.

    adesso vuoi che dove non ci sono corrispondenze tra a e b venga preso in considerazione il valore di b...

    Va bene, ma la cosa che non capisco è in che modo popolare i campi a.codice e x.

     random? arbitrario? ad muzzum?

    hai ad esempio:

    a= 6611779.y 

    b= 661179y che criterio è? prendi la parte numerica e aggiungi un punto?

    ma allora

    6611785.OA con 6611785 significa che se b è solo numerico aggiungo .OA?

    ma, ancora, 

    a= 6611779.OE con 

    b= 661179E

    cozza con la prima ipotesi di aggiungere il punto tra numero e lettera....

    che criterio di riempimento è?

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    03/02/2025 - AMRSNC66 ha scritto:

    Sicuramente mi sono spiegato male  questo sotto è quanto ho fatto ci sono quasi ma non ancora datemi una mano  

    Ciao, giusto un paio di cose per farti riflettere un pochetto meglio...

    Quanto esposto da max.riservo e da sihsandrea... è tutto condivisibile e, a mio parere, molto corretto. Pertanto non ripeterò tali concetti.

    Purtroppo non riesco a capire, anche a fronte dei tuoi esempi, le tue intenzioni.

    O per meglio dire; i tuoi hanno lo scopo di far capire il tuo intento e per come hai esposto in generale il quesito, inducono senza ombra di dubbio ad affermare che "non si può fare" . Motivo ? si creano Join con tante chiavi doppie, quindi relazioni non univoche. Questo porta sostanzialmente a risultati imprevisti.
    Gli stessi che ti portano a richiedere un aiuto per poter andare avanti.

    Ma può essere che abbiamo capito male.
    Per questo, oltre agli esempi che hai postato, per meglio capire, sarebbe necessario una analisi dove riporti le condizioni, le regole precise di come si deve svolgere questa unione di dati.

    In attesa tue nuove, buona giornata.

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Buongiorno ,

    Non è molto semplice da spiegare , ci provo .
    Vorrei rimediare ad un errore fatto diversi anni fa

    Ho un fornitore che  ha questi codice articolo e relativo prezzo 
    LISTINO 2025
    TABELLA  "A"
    "codice"        "prezzo"
    6611095.B0    12,00        
    6611095.C0    12,00
    6611095.D0    12,00        
    6611095.E0    13,50
    6611095.F0    13,50
    6611095.G0    13,50
    6611095.H0    15,00

    mentre nel nostro gestionale  sono stati codificati come : 
    LISTINO 2024
    TABELLA  "B"
    "codice"        "prezzo"
    6611095B    11,00
    6611095C    11,00
    6611095D    11,00
    6611095E     11,90
    6611095F     11,90
    6611095G    11,90
    6611095H    13,50

    ora io dovrei aggiornare il prezzo del 2024 con quello del 2025
    come posso confrontare le due tabelle ?

    grazie 

    Giuseppe

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Cia Giuseppe,

    direi che adesso è molto più chiaro. Bene !

    1. Devi prendere la stessa regola di Inserimento dati con la quale la prima volta sono stati trascodificati i codici articoli
    2. Applicare la stessa regola per Aggiornare i prezzi per i codici articoli esistenti in entrambe le tabelle
    3. Verificare se esistono nuovi Codici non presenti nell'attuale tabella e inserirli
      1. valutare se continuare l'inserimento nuovi codici secondo la stessa regola applicata la prima volta

    .
    Conosci alla perfezione la regola e i criteri utilizzati la prima volta che è stato fatto l'import?

    .
    Se è quello che si vede nell'esempio sopra, direi che è fattibilissimo

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    04/02/2025 - AMRSNC66 ha scritto:

    Ho un fornitore che  ha questi codice articolo e relativo prezzo 
    LISTINO 2025
    TABELLA  "A"

    Come prima cosa devi normalizzare il codice di tabella A

    per Esempio potresti fare una cosa del genere con un prima Query che successivamente leggerai per relazionare i codici con la tabella B

    ESEMPIO

    Adesso puoi procedere a realizzare una seconda query che legge la QryA con la Tabella B.

    In questo esempio le regole/criteri sono:

    1. Il Codice di Tabella A se termina con 0,allora si elimina lo zero
    2. Il Codice di Tabella A se contiene un punto "." allora viene eliminato

    .
    Verificare con quali regole/criteri devono essere normalizzati i Codici di Tabella A
    Ok ?

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Ci  sono riuscito , c'è voluto molto tempo e un notevole sforzo  soprattutto  per verificare i vari criteri dei codici 

    ( più di 15 mila ), però mi hai dato un grandissimo  aiuto , 

    Grazie grazie grazie 

    Giuseppe

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    04/02/2025 - AMRSNC66 ha scritto:

    Ci  sono riuscito , c'è voluto molto tempo e un notevole sforzo  soprattutto  per verificare i vari criteri dei codici 

    ( più di 15 mila ), però mi hai dato un grandissimo  aiuto , 

    Grazie grazie grazie 

    Giuseppe

    Mi fa piacere che hai risolto.

    Di solito, se cambia il codice produttore è perché cambia qualcosa a livello di produzione.

    Io metterei come obsoleto il vecchi e creerei un nuovo articolo duplicando il vecchio.

    I codici se cambiano c'è un motivo. Il classico esempio è il codice ean: lo stesso prodotto fatto in italia inizia per 80 o per 81 mentre per la spagna inizia per 84.

    In questo caso l'ean va messo come detail non nel prodotto. Quando batti l'ean risali al codice articolo.

    Puoi fare lo stesso con il codice prodotto del fornitore.

    Accade che la ditta x acquista la scarpa vattelapesca codice abc ma lo ricodifica come art. 124 mentre la ditta y lo codifica come vattpesc_abc ma stiamo parlando della stessa scarpa dello stesso produttore con rivenditori diversi.

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Buona sera 

    Si  hai ragione se il distributore aggiunge una lettera un punto o altro ad un codice articolo è perché il fornitore è diverso ,

    però questa mia è un altra problematica ,  quando sono stati inseriti nel gestionale i codici articolo di questo fornitore 

    sono stati inseriti incompleti ( per comodità e chiarezza) ma ora per poter aggiornare i prezzi da file XLS  se i codici articolo

    nostri non sono uguali a quelli del fornitore è un casino  sono più di 15.000  e manualmente è dura 

    Saluti

    Giuseppe

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    06/02/2025 - AMRSNC66 ha scritto:

    sono stati inseriti incompleti ( per comodità e chiarezza) ma ora per poter aggiornare i prezzi da file XLS  se i codici articolo

    beh, penso che la cosa migliore sia man mano che richiami l'articolo aggiorni il codice prodotto del fornitore...

    o una funzione che aggiorna il codice una volta per tutte.

    de mi salta una numerazione di protocollo aggiusto la numerazione non escogito trucchetti che mi portero' a vita...

  • Re: Confrontare valori simili di due campi uguali di 2 tabelle

    Giusto per completezza: hai fatto tutto questo ambaradan per modificare i prezzi di listino, fai un passo in più e aggiorni pure i codici.

Devi accedere o registrarti per scrivere nel forum
16 risposte