[Soci SLIP] suggerimento SQL

llcfree llcfree a gmail.com
Lun 26 Mar 2012 18:15:47 CEST


On Mon, 2012-03-26 at 15:01 +0200, Mauro Mosso wrote:
> Ciao a Tutti, sto cercando di linkare (join) due tabelle in Mysql di
> carte dei PFT, ma la mia scarsa conoscenza del linguaggio non mi
> permette di farlo.

Non so cosa siano i pft, la mia scarsa conoscenza del linguaggio e'
evidente :)

> Mi spiego meglio:
> ho una tabella in MySql collegata alla carta dei pft che contiene per
> ogni geometria una catagora (Es: Abetine, Pinete, quercete, Faggete)
> clasificati nel campo CATEGORIA
> Ho creato un'altra tabella in cui ho accorpato le categorie in classi
> (Es: Abetine e Pinete tutte e due come Conifere)
> Vorrei poter aggiungere un campo nella prima tabella (già fatto) in
> cui scrivere in automatico (prendendolo dalla seconda tabella) la
> classe di accorpamento.
> 
> Penso che sia abbastanza semplice perchè una volta lo facevo con
> Access, ma ora dondolo fare in sql non so da che parte iniziare.

Io lo so fare da linea di comando. Ti dico come si fa, perche' sotto
sotto access o mysql o chissa' che fanno la stessa cosa, solo che ognuno
ha un linguaggio un po' diverso per farlo a modo suo (anzi, immagino, un
pulsantino messo chissa' dove).

Ogni tabella corrisponde ad una relazione, per questo il database si
dice relazionale.

Ogni tabella ha una o piu' chiavi, la chiave unica che identifica gli
oggetti e' la chiave primaria. Nei databases, normalmente non si vede
perche' e' gestita internamente. 

Una tabella (o relazione) e' un insieme di campi separati, ma guarda un
po', da un separatore.

Esempio tuo. Prima tabella

abetine ptf?
pinete   "
quercete "
faggete  "
etc 

Seconda tabella

abetine conifere
pinete conifere
 etc

Le due tabelle hanno una chiave comune (il primo campo, nell'esempio) e
due o piu' colonne. In questo caso il separatore e' lo spazio, ma in
generale dev'essere un carattere che non compare nei campi della
tabella. Da linea di comando e' sufficiente fare un sort sulla prima
tabella, un sort sulla seconda tabella e poi un join delle due tabelle
ordinate usando la prima colonna come chiave. Questo puo' generarti una
terza tabella oppure puoi riscrivere la prima tabella, ad esempio, che
avra' tre colonne anziche' due. Il perche' le tabelle debbano essere
ordinate prima di fare il join diventa eveidente se provi a fare il join
a mano con o senza ordinamento.

In mysql devi fare la stessa cosa (probabilmente ti viene risparmiato il
sort, che fa automaticamente). Cerca un'istruzione join o giu' di li' e
guarda che parametri ha. Sicuramente uno dei parametri e' la chiave su
cui fare il join e un altro e' dove mettere il risultato di questo join.
Se questo sta dietro un tastino, cerca il tastino.

Lo so che e' una risposta logorroica ... Ma sono davvero tutti fatti
cosi', i databases relazionali, e la differenza nel passare da uno
all'altro e' solo nel tormento di imparare come si fa con questo
piuttosto che con quello. Io lo imparo quando mi serve, poi me lo
dimentico e lo riimparo quando mi riserve. Da linea di comando si fa da
sempre nello stesso modo. 

Loredana





Maggiori informazioni sulla lista Soci