Collegare 3 tabelle

Max61

Utente Attivo
2 Mar 2014
712
3
18
Salve, devo collegare 3 tabelle tra di loro, ho usato INNER JOIN e così riesco a collegare i dati dell'anagrafica con i la tabella sinistri e la tabella verbali. Questo collegamento l'ho fatto manualmente, mi spiego meglio: nella tabella anagrafica ho aggiunto il campo id_sinistri e id_verbali, così ho fatto anche nelle altre 2 tabelle e con la query sotto riesco a leggere i dati corrispondenti.

PHP:
$query = "SELECT tblanagrafica.Nominativo, tblsinistri.Num_Pratica, tblverbali.DecisioneGil, tblverbali.NoteVerbale, tblverbali.StatoPratica
 FROM tblanagrafica INNER JOIN tblsinistri ON tblanagrafica.idanagrafica = tblsinistri.idsinistro
 INNER JOIN tblverbali ON tblverbali.idverbale =  tblsinistri.idsinistro WHERE tblanagrafica.idanagrafica = '$idanagrafica'";

I valori dei campi id li ho scritti manualmente, direttamente in tabella, ma così non ha senso!!!

Non riesco a capire come posso collegare le 3 tabelle nella fase di insert, infatti inserisco per primo nella tabella anagrafica e successivamente nella tabella sinistri, infine a distanza di settimane devo inserire il collegamento dell'anagrafica e del sinistro nella tabella verbali.

Con la speranza di essermi spiegato...
Vi chiedo gentilmente aiuto

Grazie
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
il nominativo (anagrafica) potrebbe avere più sinistri, ciascuno con il suo verbale/i

il collegamento migliore mi sembra quello che inserisce,
l'id dell'anagrafica nella tabella sinistri e nella tabella verbali
ma al contempo nella tabella verbali andrebbe inserito anche "Num_Pratica"

le informazioni sono tutte presenti al momento dell'inserimento ed
in questo modo è possibile fare diverse ricerche
ciao
Marino
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
il nominativo (anagrafica) potrebbe avere più sinistri, ciascuno con il suo verbale/i

il collegamento migliore mi sembra quello che inserisce,
l'id dell'anagrafica nella tabella sinistri e nella tabella verbali
ma al contempo nella tabella verbali andrebbe inserito anche "Num_Pratica"

le informazioni sono tutte presenti al momento dell'inserimento ed
in questo modo è possibile fare diverse ricerche
ciao
Marino


Buongiorno,
è da poco che mi cimento con php e questa è la prima volta che provo a fare una relazione uno a molti, vediamo se ho capito: io nell'insert della form anagrafica che posto
FORM ANAGRAFICA
PHP:
        $Nominativo = $_POST['Nominativo'];
	$Residenza = $_POST['Residenza'];
	$Indirizzo = $_POST['Indirizzo'];
	$Cellulare = $_POST['Cellulare'];
	$TelefonoFisso = $_POST['TelefonoFisso'];
	$Mail = $_POST['Mail'];		
	
        $query = "INSERT INTO tblanagrafica (Nominativo, Residenza, Indirizzo, Cellulare, TelefonoFisso, Mail)
			VALUES ('$Nominativo', '$Residenza', '$Indirizzo', '$Cellulare', '$TelefonoFisso', '$Mail')";
ci dovrei aggiungere il campo idanagrafica e Num_pratica nel post dell'insert che allego sotto?
Scusami ma sono ignorante in materia.

FORM SINISTRI
PHP:
        $LocalitaSinistro = $_POST['LocalitaSinistro'];
	$AnnoSinistro = $_POST['AnnoSinistro'];
	$Num_Pratica = $_POST['Num_Pratica'];
	$Data_Richiesta_Utente = $_POST['Data_Richiesta_Utente'];
	$DataPresentatazionePratica = $_POST['DataPresentatazionePratica'];
		
	$query = "INSERT INTO tblsinistri (LocalitaSinistro, AnnoSinistro, Num_Pratica, Data_Richiesta_Utente, 
                      DataPresentatazionePratica)                       
			VALUES ('$LocalitaSinistro', '$AnnoSinistro', '$Num_Pratica', '$Data_Richiesta_Utente', 
                       '$DataPresentatazionePratica')";

Grazie
Max61
 

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
no, non stiamo parlando di form, dove le informazioni sono già presenti, ovvero

quando inserisci un sinistro, dovresti già aver inserito l'anagrafica, quindi ne possiedi l'id
con il sinistro inserisci l'id precedente ed hai il numero della pratica
e in seguito quando inserirai il verbale dovrai aggiungere entrambe le info

quindi riepilogando, più che i form, devi guardare le tabelle del database
la tabella sinistri deve contenere il legame con la tabella anagrafica
la tabella verbali deve contenere il legame con l'anagrafica ed il relativo sinistro

se vuoi posta le 3 tabelle
ciao
Marino
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
Esatto le fasi sono queste:
1-inserimento nella tabella anagrafica
2-inserimento nella tabella sinistri
3-inserimento nella tabella verbali

le prime due fasi avvengano quasi simultaneamente, mentre la terza può avvenire a giorni di distanza.
provo a inviarti le 3 tabelle zippate

Grazie
Max61
 

Allegati

  • Desktop.zip
    2,5 KB · Visite: 112

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
ti suggerirei la struttura sottostante che rappresenta
1 anagrafica a fronte di più (possibili) sinistri con relativo verbale (ma anch'essi potrebbero essere più)
ovvero per un secondo sinistro si può (deve) usare la stessa anagrafica e via di seguito

in questo modo quando si inserisce il sinistro, si ha già l'id dell'anagrafica
e quando si dovrà inserire un verbale, verrà fatta la ricerca anagrafica/sinistro,
i loro id andranno inseriti con il verbale stesso
ciao
Marino

ps prima di eliminare le righe dall'anagrafica, è bene trasferire con una query(update) i gli id nelle rispettive tabelle

Codice:
CREATE TABLE IF NOT EXISTS `tblanagrafica` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
(eliminati i due riferimenti) <<<<<<<<<<<<<<<<<<<<
  `Nominativo` varchar(255) NOT NULL,
  `Residenza` varchar(255) NOT NULL,
  `Indirizzo` varchar(255) NOT NULL,
  `Cellulare` varchar(255) NOT NULL,
  `TelefonoFisso` varchar(255) NOT NULL,
  `Mail` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)


CREATE TABLE IF NOT EXISTS `tblsinistri` (
  `id` int(11) DEFAULT NULL,
  `tblanagrafica_id` int(11) DEFAULT NULL,
.....
  PRIMARY KEY (`id`),
  KEY `par_ind` (`tblanagrafica_id`)


CREATE TABLE IF NOT EXISTS `tblverbali` (
  `id` int(11) NOT NULL DEFAULT '0',
  `tblanagrafica_id` int(11) DEFAULT NULL,

  `tblsinistri_id` int(11) DEFAULT NULL, <<<<<<<<<<<<<<<<<<

  `NoteVerbale` varchar(255) NOT NULL,
  `StatoVerbale` varchar(255) NOT NULL,
  `DecisioneGil` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `par_ind` (`tblanagrafica_id`, `tblsinistri_id`)
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
Cokkegare 3 tabelle

ti suggerirei la struttura sottostante che rappresenta
1 anagrafica a fronte di più (possibili) sinistri con relativo verbale (ma anch'essi potrebbero essere più)
ovvero per un secondo sinistro si può (deve) usare la stessa anagrafica e via di seguito

in questo modo quando si inserisce il sinistro, si ha già l'id dell'anagrafica
e quando si dovrà inserire un verbale, verrà fatta la ricerca anagrafica/sinistro,
i loro id andranno inseriti con il verbale stesso
ciao
Marino

ps prima di eliminare le righe dall'anagrafica, è bene trasferire con una query(update) i gli id nelle rispettive tabelle

Codice:
CREATE TABLE IF NOT EXISTS `tblanagrafica` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
(eliminati i due riferimenti) <<<<<<<<<<<<<<<<<<<<
  `Nominativo` varchar(255) NOT NULL,
  `Residenza` varchar(255) NOT NULL,
  `Indirizzo` varchar(255) NOT NULL,
  `Cellulare` varchar(255) NOT NULL,
  `TelefonoFisso` varchar(255) NOT NULL,
  `Mail` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)


CREATE TABLE IF NOT EXISTS `tblsinistri` (
  `id` int(11) DEFAULT NULL,
  `tblanagrafica_id` int(11) DEFAULT NULL,
.....
  PRIMARY KEY (`id`),
  KEY `par_ind` (`tblanagrafica_id`)


CREATE TABLE IF NOT EXISTS `tblverbali` (
  `id` int(11) NOT NULL DEFAULT '0',
  `tblanagrafica_id` int(11) DEFAULT NULL,

  `tblsinistri_id` int(11) DEFAULT NULL, <<<<<<<<<<<<<<<<<<

  `NoteVerbale` varchar(255) NOT NULL,
  `StatoVerbale` varchar(255) NOT NULL,
  `DecisioneGil` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `par_ind` (`tblanagrafica_id`, `tblsinistri_id`)




Buongiorno, ho cercato di creare le tabelle come mi hai suggerito, ma quando vado a inserirle nel database assicurazione mi da errore alla linea 12 e non riesco a risolverlo, ti posto di nuovo le tre tabelle configurate con i tuoi consigli e l'errore che mi da è questo:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS `tblsinistri` ( `id` int(11) DEFAULT NULL, `tbl' at line 12

Una cosa ti volevo chiedere, se ho capito a questo punto una volta sistemate le tabelle devo solo fare l'insert nella tabella anagrafica e mi crea automaticamente i rifermenti degli id collegati alle altre tabelle, giusto? Poi basta richiamare l'id della tabella anagrafica e mi trova anche l'id della tabella sinistri e di conseguenza anche l'id della tabella verbali giusto?

Una cosa non ho capito perchè devo fare l'update, nelle tabelle non ho ancora nessun dato

GRAZIE ANCORA PER LA PAZIENZA
Max61
 

Allegati

  • TBLASSICURAZIONI.zip
    981 bytes · Visite: 105

marino51

Utente Attivo
28 Feb 2013
3.039
192
63
Lombardia
per quanto riguarda l'errore, verifica di aver scritto correttamente il nome dei campi, mi sembra che mysql segnali apici differenti
quando posti un errore, cerca di postare anche la riga o lo spezzone di codice che l'ha generato, così si può rispondere con maggior sicurezza

per avere a disposizione i valori nelle tabelle devi modificare le query insert (e forse update) aggiungendo appunto i nuovi valori

una volta che i valori sono presenti nelle tabelle, si possono eseguire delle select che permettono di ottenere situazioni diverse,
cliente/pratiche
cliente/pratica/verbale
cliente/pratiche/verbali
cliente/pratiche/senza verbale
....

se il database è ancora vuoto, non c'è nulla da copiare, ... avevi parlato di un inserimento di valori manuale e pensavo avessi ... già dato
ciao
Marino
 

Max61

Utente Attivo
2 Mar 2014
712
3
18
per quanto riguarda l'errore, verifica di aver scritto correttamente il nome dei campi, mi sembra che mysql segnali apici differenti
quando posti un errore, cerca di postare anche la riga o lo spezzone di codice che l'ha generato, così si può rispondere con maggior sicurezza

per avere a disposizione i valori nelle tabelle devi modificare le query insert (e forse update) aggiungendo appunto i nuovi valori

una volta che i valori sono presenti nelle tabelle, si possono eseguire delle select che permettono di ottenere situazioni diverse,
cliente/pratiche
cliente/pratica/verbale
cliente/pratiche/verbali
cliente/pratiche/senza verbale
....

se il database è ancora vuoto, non c'è nulla da copiare, ... avevi parlato di un inserimento di valori manuale e pensavo avessi ... già dato
ciao
Marino


Scusami ancora per la mia ignoranza in materia, ma io non riesco a veder nessun apice sbagliato alla riga che mi segnala:
CREATE TABLE IF NOT EXISTS `tblsinistri` (

PHP:
perchè è identica in tutto alle altre

Allego il codice delle 3 tabelle, se riesci a vedere te dove è l'errore...perchè secondo me manca qualcosa alla fine del codice di ogni tabella, infatti ho fatto alcune prove e ho visto che separatamente le tabelle vengono create nel DB se aggiungo alla fine
[PHP]) 
ENGINE=InnoDB DEFAULT CHARSET=latin1;


ho provato ad aggiungerlo alla fine di tutte e 3 le tabelle, ma non funziona, funziona solo singolarmente, ripeto secondo me manca qualcosa alla fine del codice di ogni tabella.



PHP:
CREATE TABLE IF NOT EXISTS `tblanagrafica` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
  `Nominativo` varchar(255) NOT NULL,
  `Residenza` varchar(255) NOT NULL,
  `Indirizzo` varchar(255) NOT NULL,
  `Cellulare` varchar(255) NOT NULL,
  `TelefonoFisso` varchar(255) NOT NULL,
  `Mail` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)

 
CREATE TABLE IF NOT EXISTS `tblsinistri` (
  `id` int(11) DEFAULT NULL,
  `tblanagrafica_id` int(11) DEFAULT NULL,
  `Nominativo` varchar(255) NOT NULL,
  `LocalitaSinistro` varchar(255) NOT NULL,
  `CodiceFiscale` varchar(16) NOT NULL,
  `Cellulare` int(255) NOT NULL,
  `TelefonoFisso` int(255) NOT NULL,
  `Mail` varchar(255) NOT NULL,
  `AnnoSinistro` int(4) NOT NULL,
  `Data_Richiesta_Utente` varchar(20) NOT NULL,
  `Num_Pratica` int(20) NOT NULL,
  `DataPresentatazionePratica` varchar(20) NOT NULL,
  `Num_Protocollo_Arrivo` int(20) NOT NULL,
  `Num_Protocollo_Partenza` int(20) NOT NULL,
  `DataSinistro` varchar(20) NOT NULL,
  `OraSinistro` varchar(5) NOT NULL,
  `ViaSinistro` varchar(255) NOT NULL,
  `CausaSinistro` text NOT NULL,
  `DanniACose` text NOT NULL,
  `Lesioni` text NOT NULL,
  `Avvocato1` varchar(255) NOT NULL,
  `Avvocato2` varchar(255) NOT NULL,
  `Avvocato3` varchar(255) NOT NULL,
  `StatoPratica` int(255) NOT NULL,
  `NostroLegale` varchar(255) NOT NULL,
  `RespTecnico` varchar(255) NOT NULL,
  `RespVerdeUrbano` varchar(255) NOT NULL,
  `RespPoliziaMunicipale` varchar(255) NOT NULL,
  `RespEconomato` varchar(255) NOT NULL,
  `VerbaleNumero` int(20) NOT NULL,
  `DataVerbale` varchar(20) NOT NULL,
  `DecisioneGil` text NOT NULL,
  `AvvocatoEsterno` varchar(255) NOT NULL,
  `AvvocatoEsterno2` varchar(255) NOT NULL,
  `Perito1` varchar(255) NOT NULL,
  `Perito2` varchar(255) NOT NULL,
  `RelazioneTecnica` text NOT NULL,
  `RapportoPoliziaMunicipale` text NOT NULL,
  `IncaricatoLavoriPubblici` varchar(255) NOT NULL,
  `IncaricatoVerdeUrbano` varchar(255) NOT NULL,
  `IncaricatoInvestigazione` varchar(255) NOT NULL,
  `RespCompAssicurativa` varchar(255) NOT NULL,
  `UffAttivitaAssicurativa1` varchar(255) NOT NULL,
  `UffAttivitaAssicurativa2` varchar(255) NOT NULL,
  `RespUffAttivitaAssicurativa` varchar(255) NOT NULL,
  `NoteVerbale` varchar(255) NOT NULL,
  `ParerePositivo` varchar(255) NOT NULL,
  `ParereNegativo` varchar(255) NOT NULL,
  `ParereRinviato` varchar(255) NOT NULL,
  `ResponsabilitaTerzi` varchar(255) NOT NULL,
  `Pratica_Conclusa` varchar(255) NOT NULL,
  `PraticaItinere` varchar(255) NOT NULL,
  `IncaricatoRelazioneTecnica` varchar(255) NOT NULL,
  `RappPoliziaMunicipale` text NOT NULL,
  `UfficioAttivitaAssicurative` varchar(255) NOT NULL,
  `VerdeUrbano` varchar(255) NOT NULL,
  `FunzionarioResponsabile` varchar(255) NOT NULL,
  `Franchigia10000` int(255) NOT NULL,
  `CompagniaAssicurativa` varchar(255) NOT NULL,
  `ConsulenteCompagniaAssicurazioni` varchar(255) NOT NULL,
  `CitazioneGiudizio` varchar(255) NOT NULL,
  `SintesiSinistro` varchar(255) NOT NULL,
  `SommaLiquidata` int(255) NOT NULL,
  `Note_Componenti` text NOT NULL,
  `Verbale` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `par_ind` (`tblanagrafica_id`)



CREATE TABLE IF NOT EXISTS `tblverbali` (
  `id` int(11) NOT NULL DEFAULT '0',
  `tblanagrafica_id` int(11) DEFAULT NULL,
  `NoteVerbale` varchar(255) NOT NULL,
  `StatoVerbale` varchar(255) NOT NULL,
  `DecisioneGil` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `par_ind` (`tblanagrafica_id`, `tblsinistri_id`)

Grazie ancora
Max61
 
Discussioni simili
Autore Titolo Forum Risposte Data
V problema per collegare tabelle MySQL 2
J Collegare tabelle mysql su access MS Access 0
M Collegare due segmenti di rete diversi Reti LAN e Wireless 0
G Collegare Modem 4G Zyxel LTE4506 a rete LAN Reti LAN e Wireless 1
L Collegare un form html ad un database access Javascript 2
xone [Offro] Realizzazione landing page da collegare a Facebook ads Offerte e Richieste di Lavoro e/o Collaborazione 2
P App per collegare android ad un sito web Sviluppo app per Android 3
M Collegare due NVR nella stessa rete IP Cam e Videosorveglianza 0
R Collegare Range Exender tramite cavo ethernet direttamente al modem Reti LAN e Wireless 6
romeocharly come collegare un id di mysql con un file specifico PHP 5
romeocharly Creare un script/codice in php per collegare un id mysql con un file PHP 0
M collegare tasti radio con e mail PHP 4
ecosito Collegare un modulo contatti PHP su un modulo contatti HTML HTML e CSS 1
C Come collegare una pagina ad un bottone su mit app inventor Presentati al Forum 1
A Come collegare i valori di due caselle di una maschera MS Access 0
K Collegare rete domestica a modem webpocket 42 Reti LAN e Wireless 1
filippino Collegare pagina Google+ al sito web. Social Media Marketing 1
M collegare immagini a report MS Access 1
C Info wifi collegare dispositivi apple Windows e Software 1
Z Collegare canale youtube a pagina Google+ Social Media Marketing 0
L Collegare un virus VBScript a un link?? Sicurezza e Virus 0
Gioweb [risolto] Modo migliore per collegare sito esterno al database PHP 4
braccobaldo Collegare Canale Youtube ad una pagina Fan di Facebook Social Media Marketing 1
N Collegare IP cam in rete con forwarding IP Cam e Videosorveglianza 1
P Posso collegare un $_POST a una veriabile? Aiuto PHP 6
D Ati HD 7750 collegare 2 monitor? Hardware 2
P Collegare un domio con uno spazio web Hosting 3
R Collegare tabella mysql di aruba ad una pagina php PHP 6
S Collegare 2 funzioni javascript Javascript 2
F Collegare la registrazione del sito a quella del forum phpBB 1
G collegare funziona javascript da html Javascript 3
S collegare ajax con php Ajax 12
L Collegare database a Jquery Ui Tabs PHP 0
F integrare/collegare twitter al proprio sito PHP 1
M Come collegare un pc con la lan ad un pc collegato con la wifi tramite usb Reti LAN e Wireless 5
C Collegare i dati inseriti in un body di un html ad un file .js Javascript 33
Frank10 Collegare php con html PHP 7
I collegare dreamweaver a database sql HTML e CSS 1
B collegare telecamera a media player Javascript 0
P Collegare twitter a facebook Discussioni Varie 4
K Collegare Pc fisso a un router wi-fi Reti LAN e Wireless 1
A Collegare clipfilmato Flash 0
renoir09 Collegare post da profilo facebook su altro sito SEO e Posizionamento 1
O Problemi con MAMP OS X non riesco a collegare dreamweaver al database PHP 0
K ecommerce: collegare software gestione magazzino al sito Discussioni Varie 1
T come collegare un FORM MAIL HTML e CSS 3
C collegare un db access ad un file asp Classic ASP 2
W collegare Dreamweaver MX con database Database 1
A collegare le pagine di un sito Webdesign e Grafica 3
F collegare flash con php attraverso input text (as3) Flash 1

Discussioni simili