| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  13-02-2010, 21:48 | #1 | 
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
				
				[Sql] struttura ad albero
			 
		Sto cercando di fare questa cosa,devo creare una struttura che ha come profondità al massimo 3,dove ognuna deve tenere riferimento al padre es id padre nome 1 0 root 2 1 mp3 3 1 foto 4 3 mare però avendo profondità 3 come faccio a far "stampare" alla query es root/foto/mare come si può sostituire a ID padre il nome corrispondente? Grazie in anticipo | 
|   |   | 
|  14-02-2010, 11:17 | #2 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		In teoria potresti fare un right outer join tre volte con la stessa tabella. http://it.wikipedia.org/wiki/Join_(S...ht_outer_joins Così ti basta risalire dall'ultimo campo fino a quando trovi un NULL per ricostruire tutto il percorso. | 
|   |   | 
|  14-02-2010, 20:32 | #3 | |
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
		intanto grazie mille cionci,sei stato veramente gentile Quote: 
 Dimentico qualcosa? Inoltre le cartelle che hanno solo profondità 1, lasciano inevitabilmente vuoto il primo campo C' è la possibilità di evitare? Ultima cosa,c' è la possibilità di mettere nel codice immediatamente al fondo del nome della directory "/" senza doverlo fare manualmente es. scrivendo mp3 da solo diventi mp3/ Grazie ancora in anticipo | |
|   |   | 
|  15-02-2010, 00:32 | #4 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Strano, ti dovrebbe permettere di fare anche il terzo JOIN. Quale DBMS usi ? Riguardo al campo vuoto è voluto...non tutte le categorie hanno la stessa profondità. Sicuramente puoi anche ottenere il percorso completo separato da "/". Devi manipolare un po' di stringhe e controllare i campi NULL con qualche condizione. Però sono tutte cose che dipendono dal DBMS usato. Basterebbe usare quella query (con i 3 JOIN però) come relazione dalla quale vai a riprendere i dati in FROM e poi lavorare sulle stirnghe. | 
|   |   | 
|  15-02-2010, 09:56 | #5 | 
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
		postgresql,i primi due sono corretti?Come metto il terzo? Come faccio a manipolare le stringhe? Grazie ancora! | 
|   |   | 
|  15-02-2010, 10:39 | #6 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Non conosco il dialetto di postegresql, mi spiace. Mi stampi il risultato di quella query ? | 
|   |   | 
|  15-02-2010, 19:48 | #7 | 
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
		es root/mp3/canzoni inserendo come padre di canzoni mp3 e come padre mp3 root
		 | 
|   |   | 
|  15-02-2010, 20:07 | #8 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Mi fai vedere il risultato riempiendo la tabella con qualche elemento ? Mi sa che ne bastano due di join.
		 | 
|   |   | 
|  15-02-2010, 21:07 | #9 | 
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
		ad esempio  root mp3 root foto mare root foto montagna | 
|   |   | 
|  15-02-2010, 21:13 | #10 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Ma questo è il risultato della query ??? Dovrebbe farti vedere anche i campi NULL e i campi id.
		 Ultima modifica di cionci : 15-02-2010 alle 21:16. | 
|   |   | 
|  15-02-2010, 23:05 | #11 | 
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
		select c1.nome as Nome1,c2.nome as Nome2,c3.nome as Nome3 come nome campi (Nome1,Nome2,Nome3) e sotto i valori ad esempio come ti ho scritto e ad esempio se root disegni fa null root disegni | 
|   |   | 
|  16-02-2010, 09:31 | #12 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Metti un numero di dati maggiore nella tabella. Almeno come nell'esempio del primo post. Non mi puoi incollare tutto l'output ? Comunque ti basta conoscere gli operatori condizionali (devi testare se è NULL un campo) e fra stringhe per concatenare i risultati. | 
|   |   | 
|  16-02-2010, 09:50 | #13 | 
| Senior Member Iscritto dal: Jun 2009 
					Messaggi: 5544
				 | 
		mi puoi scrivere in codice questi 2 passaggi?
		 | 
|   |   | 
|  16-02-2010, 09:59 | #14 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		
Come ti ho detto non conosco il dialetto. Piuttosto che impararmelo io non sarebbe meglio che te lo imparassi tu ? http://www.postgresql.org/docs/8.4/i...nditional.html http://www.postgresql.org/docs/8.4/i...ns-string.html | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 12:02.









 
		 
		 
		 
		







 
  
 



 
                        
                        










