trasformazione di una tabella ->i valori di un attributo diventano gli attributi della nuova tabella

  • Creatore Discussione Creatore Discussione pendrel
  • Data di inizio Data di inizio

pendrel

Nuovo Utente
17 Mar 2014
3
0
0
Avrei bisogno dell'aiuto di qualcuno esperto in trasformazioni di tabelle.
Sto cercando di realizzare una stored procedure che mi consenta di effettuare la trasformazione della seguente tabella:

pagina| utente
----------------------
A | 1
A | 5
A | 7
B | 1
C | 1
C | 3
... | ...

da trasformare in:

utente| A | B | C | ...
------------------------------
1 | 1 | 1 | 1 | ...
3 | 0 | 0 | 1 | ...
5 | 1 | 0 | 0 | ...
7 | 1 | 0 | 0 | ...
... ... ... ... ...


I valori delle pagine sono circa 50/100 e gli utenti 1000. Quindi considerato il numero elevato di colonne
non posso creare manualmente la tabella. Il risultato dovrà essere una matrice densa di 1 e 0. La colonna user si potrebbe anche eliminare, ma non è lì il mio problema visto che non riesco a riempire la tabella con gli 0/1, se non con una update per ogni colonna, ne sarebbero 50.

Spero che qualcuno mi sia d'aiuto.

Grazie mille.
 
ciao
ho paura che mysql non riesca a supportare una tabella con 1000 colonne, ma non lo so di preciso perche non ho mai provato.
comunque se guardi questo schema di script (se usi php) vedi che ottengo un array bidimensiona con gli 0 e 1.
a te provare se riesci ad ottenere la tabella che vuoi
PHP:
<?php
/*con questi dati si ottiene la "tablla" che ti interessa
pagina| utente
----------------------
A | 1
A | 5
A | 7
B | 1
C | 1
C | 3
... | ...
*/
//---dati connessione-------
$conteggio =array();
//ho messo il nome della prima tabella a caso
$query=mysqli_query($conn,"SELECT * FROM tabella_1 ORDER BY utente");
while($riga=mysqli_fetch_array($query)){
	$utenti[]=$riga['utente'];
	$pagine[]=$riga['pagina'];
	$utente=$riga['utente'];
	$pagina=$riga['pagina'];
	$conteggio[$utente][$pagina]=1;
}
echo "<pre>";
foreach($utenti as $u){
	foreach($pagine as $p){
		if(!isset($conteggio[$u][$p])){
			$conteggio[$u][$p]=0;
		}
	}
}
ksort($conteggio);
var_dump($conteggio);
echo "</pre>";
?>
 

Discussioni simili