• Home
  • Forum
  • Hosting, Server e Sistemi
  • Database
  • MySQL

Relazione tra tabelle

  • Creatore Discussione Creatore Discussione wizard86
  • Data di inizio Data di inizio 5 Gen 2011
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 5 Gen 2011
  • #1
Salve a tutti sto incontrando delle serie difficoltà a mettere in relazione le seguenti tabelle!!!

 

Allegati

  • tabelle.png
    33,2 KB · Visite: 439

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 5 Gen 2011
  • #2
Se per ogni privato e per ogni azienda deve esserci un login corrispondente, allora io aggiungerei un campo ID_LOGIN in entrambe le tabelle (PRIVATI e AZIENDE) che sia relazionato al campo ID_LOGIN della tabella LOGIN. Per il resto mi sembra che il database sia apposto, e ti faccio i complimenti per come lo hai costruito. Non è semplice progettare uno schema del genere senza fare pastrocchi.
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 7 Gen 2011
  • #3
Grazie mille per i complimenti!!! devo farti ancora una domanda però, come faccio poi con php ad estrarmi i dati dalla giusta tabella?

Avevo pensato ad una cosa simile ma sbaglio da qualche parte nel ragionamento!!!

Questa è la query che faccio al login

PHP:
$query  = "SELECT id_login FROM LOGIN WHERE email = '$email' AND password = MD5('$password')";

Poi mi creo la sessione così

PHP:
session_start();
$_SESSION['user_id'] = $record['id'];
header("location: mod-ordini.php");
exit();

e poi al momento in cui mi devo richiamare l'anagrafica dalla giusta tabella però...

PHP:
$query  = "SELECT nome,cognome,indirizzo,cap,citta,provincia,telefono,email FROM privati WHERE id = '".$_SESSION['user_id']."'";

Ma come faccio a capire se l'utente è un privato o un azienda e fargli fare la query giusta???
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 7 Gen 2011
  • #4
Puoi fare così:
PHP:
$sql = "SELECT c.nome_categoria AS categoria, l.id_categoria FROM categorie AS c, login AS l WHERE l.id_login = {$_SESSION['user_id']} AND c.id_categoria = l.id_categoria";
Prova a vedere che cosa ti restituisce come risultato.
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 7 Gen 2011
  • #5
No scusa, non ho proprio capito la query
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 7 Gen 2011
  • #6
Praticamente seleziona il nome della categoria corrispondente all'ID della categoria dell'utente.
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 7 Gen 2011
  • #7
Scusa ma continuo a non capire...

c.nome_categoria
l.id_categoria

Cosa sono, da dove saltano fuori?

E poi un'altra cosa, ho appena scoperto che il mio hosting non ha attivo il motore InnoDB... è un problema vero?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 7 Gen 2011
  • #8
nome_categoria è il nome di un campo nella tabella categorie, id_categoria è il nome di un campo nella tabella login. Per selezionare dei campi di tabelle diverse bisogna farle precedere dal nome della tabella, ad esempio: categorie.nome_categoria e login.id_categoria. Per evitare di costruire query chilometriche si può assegnare un alias alla tabella. Nel nostro caso c per la tabella categorie e l per la tabella login. Da qui derivano c.nome_categoria (il campo nome_categoria della tabella categorie) e l.id_categoria (il campo id_categoria della tabella login).
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 10 Gen 2011
  • #9
Capito (ottima speigazione!!!).
Però forse mi sono spiegato male io...

A me non interessa estrarre il nome della categoria di appartenenza dalla tabella Categorie, invece, mi interessa riconosce la tipologia di utente e andare a fare la query per l'estrazione dell'anagrafica nella giusta tabella di appartenenza!

Esempio:
L'utente pinco@pallino.it effettua l'accesso.
PHP:
$query  = "SELECT id_login FROM LOGIN WHERE email = '$email' AND password = MD5('$password')";

metto in sessione l'id e mando l'utente alla pagina di ordine dove fa tutto quello che deve...
PHP:
session_start();
$_SESSION['user_id'] = $record['id']; 
header("location: mod-ordini.php");
exit();

a questo punto quando l'utente ha finito di ordinare la sua merce viene rimandato ad una pagina dove dovrebbe trovare tutto quello che ha ordinato + i suoi dati anagrafici.

Il dubbio ora sta qua, come strutturo la query di estrazione dell'anagrafica?
da quel che so l'utente potrebbe appartenere ad una delle 2 categorie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 10 Gen 2011
  • #10
Beh, una volta che hai ottenuto il nome della categoria a cui appartiene (potrebbe andare bene anche l'ID) non ti resta che estrarre i dati di quell'utente dalla relativa tabella (se il nome è Privati li estrai dalla tabella dei privati, altrimenti da quella delle aziende). Non vedo dov'è il problema...
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 10 Gen 2011
  • #11
Scusa se ti faccio impazzire, facciamo un passo indietro alla tua query

PHP:
$sql = "SELECT c.nome_categoria AS categoria, l.id_categoria FROM categorie AS c, login AS l WHERE l.id_login = {$_SESSION['user_id']} AND c.id_categoria = l.id_categoria";

Ho pensato che potrei utilizzarla nella mia pagina di resoconto per estrarmi i valori dalla giusta tabella di riferimento, mi spiego meglio:
Se usando la query che mi hai suggerito tu associo all'id della categoria di appartenenza il nome della categoria, posso usare proprio quest'ultimo (che avrà come valore o Privati o Aziende) per selezionare l'anagrafica dalla giusta tabella, qualcosa simile a quello che ho scritto sotto

PHP:
$queryctg = "SELECT c.nome_categoria AS categoria, l.id_categoria FROM categorie AS c, login AS l WHERE l.id_login = {$_SESSION['user_id']} AND c.id_categoria = l.id_categoria";
			$resultctg = mysql_query($queryctg);
			  	
			if (!$resultctg) {
					die("Errore nella query $query: " . mysql_error());
				}
			  	
			$recordctg = mysql_fetch_array($resultctg);
			
			// preparo ed invio la query
			$query  = "SELECT * FROM {$_SESSION['nome_categoria']} WHERE id = {$_SESSION['user_id']}";
			$result = mysql_query($query);

			$result = mysql_query($query);
			if (!$result) {
				echo ("<h2>Errore</h2> ,".mysql_error());
				echo ("Riprova...<br />\n");
			}
			else {
				while ($row = mysql_fetch_row($result)) {

Solo che mi restituisce questo...

Errore nella query : Table 'Sql382944_5.categorie' doesn't exist

Queste sono le tabelle interessate con i nomi e i campi

Categorie
id_categoria
nome_categoria

Login
id
id_categoria
email
password
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 11 Gen 2011
  • #12
Se ho capito bene come funziona la costruzione di questo tipo di select ho modificato la tua in questo modo

PHP:
$queryctg = "SELECT c.id_categoria, l.id_categoria FROM Categorie AS c, Login AS l
		WHERE l.id = {$_SESSION['user_id']} AND c.id_categoria = l.id_categoria";

solo che adesso mi da questo errore

,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 'WHERE id = 1' at line 1Riprova...
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /web/htdocs/www.nuccio.it/home/sessione/resoconto.php on line 141
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 11 Gen 2011
  • #13
suggerimenti???
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 11 Gen 2011
  • #14
Sei sicuro che la query sia quella? Dall'errore che restituisce MySQL sembra che tu abbia scritto:
PHP:
$queryctg = "SELECT c.id_categoria, l.id_categoria FROM Categorie AS c, Login AS l 
        WHERE id = {$_SESSION['user_id']} AND c.id_categoria = l.id_categoria";
 
W

wizard86

Utente Attivo
3 Ago 2009
31
0
0
  • 11 Gen 2011
  • #15
alessandro1997 ha scritto:
Sei sicuro che la query sia quella? Dall'errore che restituisce MySQL sembra che tu abbia scritto:
PHP:
$queryctg = "SELECT c.id_categoria, l.id_categoria FROM Categorie AS c, Login AS l 
        WHERE id = {$_SESSION['user_id']} AND c.id_categoria = l.id_categoria";
Clicca per allargare...

Che significa? quella che hai appena postato è esattamente quella che sto utilizzando al momento!

Quella che in origine avevi postato tu rimandava questo errore Errore nella query : Table 'Sql382944_5.categorie' doesn't exist
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 12 Gen 2011
  • #16
No, in quella che ho postato è presente solo id invece di l.id. E poi il campo non si chiamava id_login? Almeno dallo schema che hai postato sembra così...
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

R
Relazione tra tabelle
  • Rach3
  • 5 Apr 2020
  • MS Access
Risposte
5
Visite
2K
MS Access 7 Apr 2020
Rach3
R
D
relazione tra 2 tabelle (datiutenti e slide)
  • darkman_1975
  • 27 Giu 2011
  • PHP
Risposte
1
Visite
2K
PHP 3 Lug 2011
darkman_1975
D
B
Problema relazione tra due tabelle
  • banart
  • 5 Ott 2010
  • Database
Risposte
0
Visite
2K
Database 5 Ott 2010
banart
B
M
[MS Access] Relazione tra maschere
  • Mac_Gf
  • 29 Lug 2019
  • MS Access
Risposte
1
Visite
2K
MS Access 19 Set 2019
gianphy
G
C
relazione tra swf e finestra internet
  • cricp
  • 13 Mar 2009
  • Flash
Risposte
0
Visite
1K
Flash 13 Mar 2009
cricp
C
S
Consiglio si relazione tabelle
  • staiul
  • 7 Gen 2024
  • MS Access
Risposte
1
Visite
2K
MS Access 16 Gen 2024
max75
E
Info relazione tabelle
  • Emanuele85
  • 16 Set 2023
  • MySQL
Risposte
17
Visite
5K
MySQL 19 Set 2023
marino51
D
Laravel8 relazione molti a molti
  • dani9191
  • 11 Mag 2021
  • Programmazione
Risposte
2
Visite
2K
Programmazione 13 Mag 2021
dani9191
D
V
[PHP] Relazione molti a molti
  • vincenzo_d.elia
  • 28 Giu 2018
  • PHP
Risposte
2
Visite
2K
PHP 28 Giu 2018
marino51
T
[PHP] Relazione uno a uno
  • tigrhes salty
  • 3 Giu 2017
  • PHP
Risposte
1
Visite
1K
PHP 4 Giu 2017
marino51
M
registrazione in relazione ai commenti
  • Massimiliano_m
  • 30 Gen 2017
  • Programmazione
Risposte
0
Visite
1K
Programmazione 30 Gen 2017
Massimiliano_m
M
T
Domanda su Schema e Relazione
  • themagiciant95
  • 8 Nov 2016
  • Database
Risposte
0
Visite
1K
Database 8 Nov 2016
themagiciant95
T
[MySQL] "Sicronizzare" due tabelle tramite il campo di relazione
  • felino
  • 17 Feb 2016
  • MySQL
Risposte
0
Visite
2K
MySQL 17 Feb 2016
felino
M
Creare stampe pdf con tabelle relazione uno a molti
  • Max61
  • 17 Dic 2015
  • PHP
Risposte
0
Visite
2K
PHP 17 Dic 2015
Max61
M
M
Relazione uno a molti
  • Max61
  • 10 Nov 2015
  • PHP
  • 2 3
Risposte
59
Visite
7K
PHP 23 Nov 2015
borgo italia
M
Problema relazione uno a molti con 3 tabelle
  • Max61
  • 22 Mag 2015
  • MySQL
Risposte
4
Visite
3K
MySQL 5 Nov 2015
Max61
M
F
Gestione portfolio / categorie con relazione molti a molti
  • Fabio Grasso
  • 15 Nov 2014
  • MySQL
Risposte
7
Visite
2K
MySQL 17 Nov 2014
Fabio Grasso
F
M
relazione ricorsiva
  • mteresa
  • 13 Set 2014
  • Database
Risposte
0
Visite
2K
Database 13 Set 2014
mteresa
M
F
record accodati non in relazione
  • fede4130
  • 27 Mar 2013
  • MS Access
Risposte
3
Visite
1K
MS Access 29 Mar 2013
HolidaySoft.it
E
ACCESS-il capo interessato in relazione non si autocompila!
  • explayer
  • 22 Mar 2013
  • MS Access
Risposte
0
Visite
1K
MS Access 22 Mar 2013
explayer
E
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Hosting, Server e Sistemi
  • Database
  • MySQL
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?