Confronto tra record della stessa tabella.

di il
1 risposte

Confronto tra record della stessa tabella.

Buonasera,
ho provato a cercare nel forum qualcosa che facesse al caso mio, ma non ho trovato.
Provo a scrivere di cosa si tratta.
Un mio DB parte dell'importazione di un file .txt non formattato in modo ideale che contiene delle anagrafiche clienti.

Di seguito un esempio di importazione
ID Campo1
1 MARIO ROSSI
2 DESCRIZIONE 1
3 DESCRIZIONE 2
4 DESCRIZIONE 3
5 GIUSEPPE BIANCHI
6 DESCRIZIONE 1
7 DESCRIZIONE 2
8 LUIGI GIALLI
9 DESCRIZIONE 1
10 DESCRIZIONE 2
11 DESCRIZIONE 3
12 DESCRIZIONE 4

Il mio obbiettivo è quello di associare ad ogni "descrizione" (che potrebbero essere da 1 a n) il nominativo corrispondente, in questo modo:

ID; Campo1; Nominativo;
1; MARIO ROSSI; MARIO ROSSI;
2; DESCRIZIONE 1; MARIO ROSSI;
3; DESCRIZIONE 2; MARIO ROSSI;
4; DESCRIZIONE 3; MARIO ROSSI;
5; GIUSEPPE BIANCHI; GIUSEPPE BIANCHI;
6; DESCRIZIONE 1; GIUSEPPE BIANCHI;
7; DESCRIZIONE 2; GIUSEPPE BIANCHI;
8; LUIGI GIALLI; LUIGI GIALLI;
9; DESCRIZIONE 1; LUIGI GIALLI;
10; DESCRIZIONE 2; LUIGI GIALLI;
11; DESCRIZIONE 3; LUIGI GIALLI;
12; DESCRIZIONE 4; LUIGI GIALLI;

Sto provando ad usare una query che mette in relazione l'id con l'id+1

SELECT T1.id, T1.campo1, T2.campo1,
IIf([T1].[campo1] Not Like "Desc*",[T1].[campo1],[T2].[campo1]) AS Risultato
FROM txt AS T1
LEFT JOIN txt AS T2
ON T1.id+1=T2.id;

Questo mi associa solo la prima descrizione dopo il nome.

id T1.campo1 T2.campo1 Risultato
1; MARIO ROSSI; DESCRIZIONE 1; MARIO ROSSI;
2; DESCRIZIONE 1; DESCRIZIONE 2; DESCRIZIONE 2;
3; DESCRIZIONE 2; DESCRIZIONE 3; DESCRIZIONE 3;
4; DESCRIZIONE 3; GIUSEPPE BIANCHI; GIUSEPPE BIANCHI;
5; GIUSEPPE BIANCHI; DESCRIZIONE 1; GIUSEPPE BIANCHI;
6; DESCRIZIONE 1; DESCRIZIONE 2; DESCRIZIONE 2;
7; DESCRIZIONE 2; LUIGI GIALLI; LUIGI GIALLI;
8; LUIGI GIALLI; DESCRIZIONE 1; LUIGI GIALLI;
9; DESCRIZIONE 1; DESCRIZIONE 2; DESCRIZIONE 2;
10; DESCRIZIONE 2; DESCRIZIONE 3; DESCRIZIONE 3;
11; DESCRIZIONE 3; DESCRIZIONE 4; DESCRIZIONE 4;
12; DESCRIZIONE 4;

Domanda? E' giusto utilizzare una query o è meglio scrivere qualche riga di codice (un ciclo For...Loop magari) che confronti i record.
Qualcuno ha qualche suggerimento?

Grazie in anticipo

1 Risposte

  • Re: Confronto tra record della stessa tabella.

    Ti serve un criterio per riconoscere i nomi dalle descrizioni.
    Poi in VBA crei un recordset con la tabella e lo scansioni riga per riga con un ciclo DO. Quando riconosci un nome, i testi che lo separano da un altro nome sono descrizioni. Riconosciute le stringhe le puoi comporre come vuoi aggiungendo records ad una nuova tabella.
Devi accedere o registrarti per scrivere nel forum
1 risposte