Particolare Trasposizione di Tabella Access

domenica 18 ottobre 2009 - 18.20

likelucky Profilo | Newbie

Ciao a tutti, mi sono appena iscritto anche se da tempo ho avuto modo di conoscere il vostro forum.

Ho un problemino che per un principiante come me è diventato enorme ...

Per una migliore comprensione vi fornisco il file di esempio che trovate qui ---> http://rapidshare.com/files/294682442/esempio.zip.html

Questo è solo un esempio perchè nel mio caso reale avrei più di 100.000 righe.

Vaoorei trasformare la tabella1 che trovate nel file nella tabella2 che trovate sempre nello stesso file, i dati contenuti sono gli stessi ma rappresentati in modo diverso. Nella tabella1 per descrivere un UTENTE (come da esempio) ci vogliono più righe, mentre nella tabella2 sono molto meno le righe ed in alcuni casi (nel caso reale) potrei ottenere anche una sola riga. Ovviamente la tabella2 essendo un esempio l'ho fatta io a mano, la stessa cosa non potrei fare con il file reale.

In pratica si tratta di una trasposizione, o qualcosa del genere, dove i valori contenuti nella colonna di tabella1 diventano le intestazioni delle colonne della tabella2.

Spero di essere stato chiaro nell'esporre il problema e spero vivamente in un vostro prezioso supporto.

Grazie.

Ciao.


iif Profilo | Expert

Le coppie di record hanno un ID uguale?

likelucky Profilo | Newbie

Tutti i record presenti nel database reale, così come in quello di esempio, non hanno un ID e nessuna chiave primaria.

iif Profilo | Expert

Come capisco che sono una coppia? non riesco a scaricare il file.

likelucky Profilo | Newbie

Questa è la tabella1

UTENTE DATI VALORE DATA
Fabio Altezza 1,74 01/01/2009
Fabio Peso 62 01/01/2009
Fabio Password prova 01/01/2009
Fabio Indirizzo Via Verdi 01/01/2009
Mario Altezza 1,65 01/01/2009
Mario Peso 74 01/01/2009
Mario Password casa 01/01/2009
Mario Indirizzo Piazza Vittoria 01/01/2009
Fabio Indirizzo Via Como 01/06/2009
Paolo Altezza 1,69 01/01/2009
Paolo Peso 57 01/01/2009
Paolo Peso 60 01/01/2009
Mario Password tavolo 01/07/2009
Fabio Password sedia 01/03/2009


Questa è la tabella2

UTENTE Altezza Peso Password Indirizzo Data
Fabio 1,74 62 prova Via Verdi 01/01/2009
Fabio 1,74 62 sedia Via Verdi 01/03/2009
Fabio 1,74 62 sedia Via Como 01/06/2009
Mario 1,65 74 casa Piazza Vittoria 01/01/2009
Mario 1,65 74 tavolo Piazza Vittoria 01/07/2009
Paolo 1,69 57 01/01/2009
Paolo 1,69 60 01/01/2009

iif Profilo | Expert

Procedi in questo modo:
a) fai una insert con il campo utente
b) fai un update degli altri campi mettendo come where il nome utente

dovresti essere a posto

likelucky Profilo | Newbie

... aiutami un pochino ... mi puoi fare l'esempio della query ? .. sono proprio un newbie ...

iif Profilo | Expert

a) insert into tabella2 (utente) select utente FROM tabella1 group by tabella1.utente

b) fai un ciclo che legge i dati della tabella1 fino alla fine
c) durante il ciclo leggi i valori dei campi
d) esegui la query "update tabella2 set campo1=valorecampo1tabella1, campo2=valorecampo2tabella1 where utente=valorecampoutentetabella1

likelucky Profilo | Newbie

Scusa ma sto facendo un po' di fatica ... ti prego porta pazienza ...

>a) insert into tabella2 (utente) select utente FROM tabella1
>group by tabella1.utente

Ho creato una nuova tabella2 (dove dovrei trovarmi il risultato finale che attendo) con un solo campo "UTENTE", poi ho creato la seguente query :

INSERT INTO tabella2 ( UTENTE ) SELECT UTENTE FROM tabella1 GROUP BY tabella1.UTENTE;

Il risultato ottenuto è tre record "Fabio","Mario","Paolo" dentro la tabella2.


>
>b) fai un ciclo che legge i dati della tabella1 fino alla fine
>c) durante il ciclo leggi i valori dei campi

E qui incomincio a zoppicare ... cosa intendi quando dici fai un ciclo che legge i dati ?


>d) esegui la query "update tabella2 set campo1=valorecampo1tabella1,
>campo2=valorecampo2tabella1 where utente=valorecampoutentetabella1

Ho provato a creare una query con lo stesso testo ma non funziona ...

Ho allegato il file a questo post così puoi vedere anche tu quello che ho fatto (molto poco dato che mi sono fermato al primo punto).
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5