- Home
- Categorie
- Coding e Sistemistica
- Coding
- inserimento e cancellazione dati in due tabelle diverse
-
inserimento e cancellazione dati in due tabelle diverse
Ciao a tutti, mi sono appena iscritto al forum, ho dato un occhiata ai 3d per la risoluzione del mio problema, ma non ho trovato quello che cerco.
Premesso che sono alle primissime armi avrei bisogno di sapere come inserire e/o cancellare dati da più tabelle:
nome db=scuolacalcio
tabelle=soci,anagrafica,abbigliamento e pagamenti
quando utilizzo la tabella soci con id_socio chiave primaria come posso inserire i dati anche nelle altre tabelle sempre relativamente all'id_socio presente nelle altre tabelle? E quando devo cancellare un socio dalla tabella soci come devo cancellare i suoi dati contenuti nelle altre tabelle?grazie e buon divertimento
-
Se hai bisogno di inserire dati in due tabelle ogni volta riferiti allo stesso id, e cancellarli probabilmente hai sbagliato a costruire il db.

Se sbaglio: apri il db, blocca la tabella (lock table) se tale opzione è ammessa dal tuo db, seleziona il primo campo ed eliminalo, seleziona il secondo ed elimilalo e poi sblocca il tutto.
Cmq ti ripeto: secondo me basta normalizzarlo e risolvi tutto

-
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
-- Versione MySQL: 4.1.9
-- Versione PHP: 4.3.10-- Database:
scuolacalcio
--
-- Struttura della tabellasociCREATE TABLE
soci(
id_sociovarchar(5) NOT NULL default '',
data_Iscrizionedate default NULL,
cognomevarchar(30) default NULL,
nomevarchar(30) default NULL,
luogo_Nascitavarchar(30) default NULL,
data_Nascitadate default NULL,
nazionalitavarchar(30) default NULL,
indirizzovarchar(30) default NULL,
capint(5) default NULL,
cittavarchar(30) default NULL,
provinciachar(2) default NULL,
telefonovarchar(15) default NULL,
cellularevarchar(15) default NULL,
tessera_figcint(8) default NULL,
notevarchar(40) default NULL,
fotografiachar(1) NOT NULL default '',
PRIMARY KEY (id_socio)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;-- Struttura della tabella
anagraficaCREATE TABLE
anagrafica(
id_socioint(5) NOT NULL default '0',
cod_Fiscalevarchar(16) default NULL,
nucleo_Familiareint(2) default NULL,
nome_Padrevarchar(20) default NULL,
prof_Padrevarchar(40) default NULL,
nome_Madrevarchar(20) default NULL,
cognome_Madrevarchar(20) default NULL,
prof_Madrevarchar(40) default NULL,
fotochar(1) default 'n',
certif_Medicochar(1) default 'n'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;--
-- Struttura della tabellaabbigliamentoCREATE TABLE
abbigliamento(
id_socioint(5) NOT NULL default '0',
categoriavarchar(30) default NULL,
kit_lungoint(1) default NULL,
taglia_kit_lungotext,
calze_kit_lungoint(1) default NULL,
taglia_calze_kit_lungovarchar(5) default NULL,
kit_cortoint(1) default NULL,
taglia_kit_cortovarchar(5) default NULL,
calze_kit_cortoint(1) default NULL,
taglia_calze_kit_cortovarchar(5) default NULL,
kit_portiereint(1) default NULL,
taglia_kit_portierevarchar(5) default NULL,
calze_kit_portiereint(1) default NULL,
taglia_calze_kit_portierevarchar(5) default NULL,
tuta_lavoroint(1) default NULL,
taglia_tuta_lavorovarchar(5) default NULL,
tuta_passeggioint(1) default NULL,
taglia_tuta_passeggiovarchar(5) default NULL,
borsaint(1) default NULL,
taglia_borsavarchar(5) default NULL,
palloneint(1) default NULL,
misura_pallonevarchar(5) default NULL,
kee_wayint(1) default NULL,
taglia_kee_wayvarchar(5) default NULL,
giacconeint(1) default NULL,
taglia_giacconevarchar(5) default NULL,
zainoint(1) default NULL,
parastinchiint(1) default NULL,
taglia_parastinchivarchar(5) default NULL,
zuccottoint(1) default NULL,
taglia_zuccottovarchar(5) default NULL,
berrettoint(1) default NULL,
taglia_berrettovarchar(5) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;--
-- Struttura della tabellapagamentiCREATE TABLE
pagamenti(
id_socioint(5) NOT NULL default '0',
servizio_Pulminochar(1) default NULL,
Convenzionevarchar(30) default NULL,
Qt_Associativadecimal(5,2) default NULL,
Qt_Iscrizionedecimal(5,2) default NULL,
iscrizione_Versatadecimal(5,2) default '0.00',
Qt_Mensiledecimal(5,2) default NULL,
setdecimal(5,2) default '0.00',
ottdecimal(5,2) default '0.00',
novdecimal(5,2) default '0.00',
dicdecimal(5,2) default '0.00',
gendecimal(5,2) default '0.00',
febdecimal(5,2) default '0.00',
mardecimal(5,2) default '0.00',
aprdecimal(5,2) default '0.00',
magdecimal(5,2) default '0.00',
giudecimal(5,2) default '0.00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;--
-- Struttura della tabellapulminoCREATE TABLE
pulmino(
id_socioint(5) NOT NULL default '0',
data_Pulminodate default NULL,
Qt_Pulminodecimal(5,2) default '0.00',
Mese_Pulminodecimal(5,2) default '0.00',
setdecimal(5,2) default '0.00',
ottdecimal(5,2) default '0.00',
novdecimal(5,2) default '0.00',
dicdecimal(5,2) default '0.00',
gendecimal(5,2) default '0.00',
febdecimal(5,2) default '0.00',
mardecimal(5,2) default '0.00',
aprdecimal(5,2) default '0.00',
magdecimal(5,2) default '0.00',
giudecimal(5,2) default '0.00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;--
-- Struttura della tabellaregistrazioni_onlineCREATE TABLE
registrazioni_online(
id_registrazioneint(5) NOT NULL auto_increment,
emailvarchar(40) NOT NULL default '',
cognomevarchar(20) NOT NULL default '',
nomevarchar(20) NOT NULL default '',
usernamevarchar(40) default NULL,
passwordvarchar(10) default NULL,
PRIMARY KEY (id_registrazione)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;--
Queste sono le tabelle che compongono il database.
Utilizzo lo stesso database con access senza problemi, dal momento che sono molto interessato a metterlo online a disposizione dei genitori dei soci iscritti, i quali con inserimento di username e password possano accedere alla pagina relatva al record di proprio interesse così che possano visualizzare i dati relativi al vestiario, pagamenti effettuati ecc...Mi rendo conto della complessità della mia richiesta, ma non ho fretta, anche se a piccoli passi, sono intenzionato a raggiungere il mio obiettivo.
Ovviamente sarò grato a tutti quelli che vorranno aiutarmi fin da ora.
Sono veramente agli inizi è vorrei procedere iniziando da un livello molto basso.
Per riepilogare come prima necessità vorrei poter inserire e cancellare i dati relativi ad un socio contemporaneamente in tutte le tabelle.
Chiedo scusa per la lunghezza, ma l'ho fatto solo per rendere chiaro a che punto sono.
-
Confermo l'idea di prima.
Non capisco perché hai fatto 3 tabelle per indicare dati sulla stessa persona, dati univoci intendo.
Secondo me il problema è alla radice.
-
Perchè moltissimi mi hanno detto che costruire un unica tabella con tutti quei dati non era una buona cosa, veniva un tabellone esagerato, quindi mi hanno consigliato di dividere la tabella in tante tabelle piu piccole e collegarle tra loro.
Però, indipendentemente dalla scelta di unica o più tabelle, rimane sempre che credo sia possibile inserire i dati relativi a un id_socio in tutte le tabelle, o no?
In access si fa semplicemente, il problema è che vorrei farlo con mysql.
grazie per le risposte.
-
Ti hanno consigliato male, secondo me.
Cmq, visto che non vuoi risolvere il problema alla radice puoi fare quello che ti ho detto prima:
- blocchi le tabelle LOCK TABLE [prima tabella] WRITE, [seconda tabella] WRITE
- fai le singole query: UPDATE [prima tabella] SET [campo]=[valore]
WHERE id_socio=[id_del_socio];
UPDATE [seconda tabella] SET [campo]=[valore]
WHERE id_socio=[id_del_socio]; - sblocchi UNLOCK TABLES;
vedi te poi come interfacciarti al db.
Ciao
