|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
[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 |
|
|
|
|
|
#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. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
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 |
|
|
|
|
|
|
#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. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
postgresql,i primi due sono corretti?Come metto il terzo?
Come faccio a manipolare le stringhe? Grazie ancora! |
|
|
|
|
|
#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 ? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
es root/mp3/canzoni inserendo come padre di canzoni mp3 e come padre mp3 root
|
|
|
|
|
|
#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.
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
ad esempio
root mp3 root foto mare root foto montagna |
|
|
|
|
|
#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. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
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 |
|
|
|
|
|
#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. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5543
|
mi puoi scrivere in codice questi 2 passaggi?
|
|
|
|
|
|
#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: 09:36.




















