我应该如何映射许多用户和部门之间的关系

时间:2014-03-04 11:31:46

标签: mysql database database-design

我有以下实体

Department有很多Users,用户有很多Records

现在我希望用户可以看到相同department的所有记录。

我很困惑我是否需要在DepartmentRecords之间建立关系,或者可以通过用户遍历

5 个答案:

答案 0 :(得分:1)

您可以使用子查询:

SELECT * FROM Records WHERE user_id IN (SELECT User.id FROM User WHERE department_id = 123)

答案 1 :(得分:1)

JOINS比子查询更有效。

您可以尝试使用INNER JOIN

SELECT * FROM records AS r
INNER JOIN
users AS u ON (r.user_id = u.user_id)
WHERE u.department_id = 1

答案 2 :(得分:0)

您只需要从departmentusers的1-n关系以及从usersrecords的1-n关系。然后通过查找该记录所分配给哪个部门来了解记录所属的部门。

答案 3 :(得分:0)

如果用户有id_department且记录有id_user,那么您可以获取与某个部门相关的所有记录。

答案 4 :(得分:0)

示例代码:

SELECT a.batsman_id,a.matchs,a.hundreds,b.country_type, c.player_name
FROM batsman a  INNER JOIN countrycode b ON a.country_code=b.country_code
        INNER JOIN players c ON a.player_id=c.player_id
        ORDER BY a.batsman_id; 

截屏:

countrycode

players

batsman

output