2010-04-27 7 views
0
+-------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+-------+-------------+------+-----+---------+-------+ 
| pid | varchar(99) | YES |  | NULL |  | 
+-------+-------------+------+-----+---------+-------+ 
1 row in set (0.00 sec) 


+-------+---------------+------+-----+---------+-------+ 
| Field | Type   | Null | Key | Default | Extra | 
+-------+---------------+------+-----+---------+-------+ 
| pid | varchar(2000) | YES |  | NULL |  | 
| recid | varchar(2000) | YES |  | NULL |  | 
+-------+---------------+------+-----+---------+-------+ 
2 rows in set (0.00 sec) 

Ceci est ma table. pid est juste l'identifiant de l'utilisateur. "recid" est une chanson recommandée pour cet utilisateur. J'espère avoir une liste de pid, et ensuite recommandé des chansons pour chaque personne. Bien sûr, dans ma deuxième table, (pid, recid) serait une clé unique.Comment ajouter une relation un-à-un dans MYSQL?

Comment faire une requête bi-univoque pour cela?

+0

Les relations un-à-un doivent être modélisées pour exister dans la même table, et non séparées entre deux (ou plus). –

Répondre

0
# retrieve all songs associated to a given user  
SELECT songs.* 
FROM user 
INNER JOIN songs ON (user.pid = songs.pid) 
WHERE user.pid = ? 
0

Vous pouvez créer avec FKs requête comme

ALTER TABLE `foo` 
ADD FOREIGN KEY (`bar_id`) REFERENCES `bar` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE 

et voir le mysql documentation. Notez également que Mysql ne prend en charge que les clés étrangères dans le moteur InnoDB.

0

Vous souhaitez utiliser une jointure (interne) pour extraire les informations. Voici une référence que j'ai utilisée et que j'ai trouvée utile. Joins

Questions connexes