relazioni tra 2 tabelle mysql

iperboreo

Utente Attivo
21 Giu 2012
126
0
16
Ciao a tutti,
vorrei chiedere come si relazionano due tabelle in database mysql, al fine di "copiare" il valore di un campo di una tabella (per esempio l'id)
in un campo della seconda tabella.
Tutto questo al fine di poter estrarre con una query, selezionando di visualizzare (con where....) solo i dati corrispondenti a un id.

Spero sia stato abbastanza chiaro, grazie come sempre.

Iperboreo
 
Ti faccio un esempio pratico. Supponiamo che il tuo sistema consenta a ogni utente registrato di caricare dei file (un sito come Megaupload, per capirci). Nella più semplice delle ipotesi, avrai due tabelle.

La prima tabella è quella contenente gli utenti ed è strutturata più o meno così:
  • id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
  • username: VARCHAR(255) NOT NULL
  • password VARCHAR(255) NOT NULL
  • salt: VARCHAR(20) NOT NULL
  • email: VARCHAR(255) NOT NULL

La seconda tabella invece contiene i file, e qui dovrai specificare l'ID dell'uploader. Dunque la struttura sarà simile a questa:
  • id: INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
  • user_id: INT(11) NOT NULL
  • name: VARCHAR(255) NOT NULL
  • path: VARCHAR(255) NOT NULL

Ora supponiamo che tu abbia uno script nel quale recuperi i file associati all'utente con ID 1:
PHP:
<?php
// sia $pdo un'istanza di PDO

$stm = $pdo->prepare('SELECT * FROM files WHERE user_id = ?');
$stm->execute(array(1));

print_r($stm->fetchAll(PDO::FETCH_ASSOC));
?>
 
grazie per l'aiuto,
ci sto ragionando su parecchio,
ma cosi non mi funziona, le tabelle non interagiscono, non possono,
devo mettere io l'id dell'uploader,

ci ragiono su tutta notte, poi domani ti aggiorno,

grazie Alessandro
 
Devi sempre inserire tu l'ID dell'uploader: come fa il database a sapere chi è il possessore della relazione? Il compito del database è immagazzinare dati, non eseguire operazioni logiche.

Se invece stai cercando informazioni sulle FOREIGN KEY di MySQL, ecco qui.
 

Discussioni simili