Qualcuno sa spiegarmi come si realizza un relazione tra tabelle in mysql su tabelle già realizzate e su tabelle ancora da realizzare?
Ho fatto una ricerca su internet ma in merito non ho trovato nulla.
Grazie,
ciao.
Qualcuno sa spiegarmi come si realizza un relazione tra tabelle in mysql su tabelle già realizzate e su tabelle ancora da realizzare?
Ho fatto una ricerca su internet ma in merito non ho trovato nulla.
Grazie,
ciao.
C'e poco da spiegare. si tratta di di associare due campi tra tabelle che abbiano lo stesso valore in modo da avere un riferimento per i dati contenuti. Es.:
Come vedi clienti.id_cliente e' in relazione con ordine.id_clientecodice:clienti ordine merce id_cliente <--+ id_ordine +--> id_merce nome \--> id_cliente / descrizione cognome id_merce <-+ prezzo indirizzo data_consegna quantita
mentre merce.id_merce e' in relazione con ordine.id_merce.
quando farai la query sara' semplice estrarre i dati che ti pare. Es:
In questo modo avresti ottenuto la lista della spesa del cliente 'pippo'codice:SELECT * FROM ordine left join clienti on clienti.id_cliente = ordine.id_cliente left join merce on merce.id_merce = ordine.id_merce where clienti.nome = 'pippo'
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Per quanto riguarda l'estrazione so come procedere, il mio problema è quando vado a realizzare una tabella nuova, ho letto in giro che al momento della creazione della tabella devo scrivere qualcosa come foreign key. Mentre se invece le tabelle sono già create, non c'è nulla da modificare o attivare su di esse?
Una relazione tra tabelle non e' propriamente una foreign key, tra l'altro diaponibili solo sul motore InnoDB. La foreign key e' una chiave esterna, cioe' una chiave della tabella "a" residente su tabella "b" con cui e' vincolata da svariate condizioni.Originariamente inviato da Bartjsp
Per quanto riguarda l'estrazione so come procedere, il mio problema è quando vado a realizzare una tabella nuova, ho letto in giro che al momento della creazione della tabella devo scrivere qualcosa come foreign key. Mentre se invece le tabelle sono già create, non c'è nulla da modificare o attivare su di esse?
La puoi mettere dove e quando serve sia alla creazione delle tabelle sia successivamente con alter table.
Vedi il riferimento del manuale al proposito.
http://dev.mysql.com/doc/refman/5.0/...nstraints.html
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Devi usare la sintassi ALTER TABLE. E' qualcosa del genere:
Eventualmente puoi aggiungere altri parametri come ad esempio:codice:ALTER TABLE `nomeTabella` ADD CONSTRAINT `nomeForeignKey` FOREIGN KEY (`campoTabella`) REFERENCES `tabellaCuiPunta` (`campoDellaTabellaCuiPunta`)
Esempio:codice:ON DELETE CASCADE ON UPDATE CASCADE,
Si presume in questo caso che tu abbia una tabella clienti con un campo ID e una tabella ordini con campo IDCliente.codice:ALTER TABLE `ordini` ADD CONSTRAINT `clienteDeveEsistere` FOREIGN KEY (`IDCliente`) REFERENCES `clienti` (`ID`)
I campi su cui crei foreign key devono avere un indice o la creazione della foreign key fallisce.
Le foreign key sono supportate putroppo solo per tabelle di tipo InnoDB, una delle gravi e assurde pecche di MySQL.
PS: scusa Piero ma secondo me non bisogna insegnare quelle schifezze delle "relazioni". SQL prevede le FOREIGN KEY, che MySQL non le supporti su tabelle di base come le MyISAM e' un problema di MySQL che va esposto e spiegato, altrimenti la gente pensa che sia 'normale'.
Secondo me l'assenza di FOREIGN KEY su un DBMS non va molto lontano dall'assenza della carrozzeria da una macchina.
There are 10 types of people in the world - those who understand binary and those who don't.
Hai proprio ragione... Si risolverebbero un milione e mezzo di problemi....Secondo me l'assenza di FOREIGN KEY su un DBMS non va molto lontano dall'assenza della carrozzeria da una macchina.
Ciao boiz!!!!
Catastrofi del nostro secolo (non in ordine...):
1) Hiroshima 45;
2) Cernobyl 86;
3) Windows...!