如何连接这两个表之间的关系?

时间:2016-02-20 01:37:47

标签: mysql database database-design relationship

我有两张桌子:

users (user_id, user_name, user_email, user_pass)
&
toys (name, box)

我需要每个用户都有自己的玩具桌。基本上,用户的表格是我的登录表格,玩具是用户登录后选择玩具的地方。

Toys table

2 个答案:

答案 0 :(得分:1)

向Users和Toys添加一个具有FK(外键)的额外表,作为多对多关系的表

即。创建一个名为user_toys的表,每行包含toy_id和user_id组合。然后,如果您想获得特定用户的所有玩具名称,您可以这样做

SELECT t.name 
FROM Toys t,
     User_toys relation,
WHERE relation.toy_id = t.toy_id
AND relation.user_id = :user_id

(注意,如果关系表中已经有user_id,则不需要加入Users表)

如果每个玩具只能属于一个用户(1对多),那么在Toys表上为user_id FK添加额外的列就足够了。但听起来像你的问题每个用户都有他们独立的玩具集。

参考:https://en.wikipedia.org/wiki/Associative_entity

答案 1 :(得分:0)

你好,你需要表中的一个字段玩具来使你的表成为关系,这是我的基于你的模式

这是玩具

+--------+-------------+--------------+-----+
| id_box | id_box_user |   id name    | box |
+--------+-------------+--------------+-----+
|      1 |           1 | Name toys 1  | box |
|      2 |           2 | Name toys 3  | box |
+--------+-------------+--------------+-----+

然后这是用户

+---------+-------------+------------+-----------+
| user_id |  user_name  | user_email | user_pass |
+---------+-------------+------------+-----------+
|       1 | user name 1 | email      | pass      |
|       2 | user name 2 | email      | pass      |
+---------+-------------+------------+-----------+

你需要像这样的查询来获取特定用户的所有数据

SELECT * FROM user a, toys b where a.user_id=b.id_box_user_id

但是对于特定用户使用此

SELECT * FROM user a, toys b where a.user_id=b.id_box_user_id and a.user_id='variable which store session'

这是屏幕截图 enter image description here