我有5个表来存储人员根据他们的头衔接受培训的培训记录列表。一个用户可以拥有许多头衔/工作职责。
更新:sqlfiddle
titles
包含“经理”,“领导”......
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| uid | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
users
,其中一个用户可以拥有多个titles
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| uid | int(11) | NO | PRI | NULL | auto_increment |
| first | varchar(255) | NO | | NULL | |
| last | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
procedures
个用户将根据procedures
titles
的培训
+----------+------------------+------+-----+---------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-----------------------------+
| uid | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
+----------+------------------+------+-----+---------+-----------------------------+
title_map
允许users
拥有多个标题
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| uid | int(11) unsigned | NO | PRI | NULL | auto_increment |
| title_uid | int(11) | NO | | NULL | |
| user_uid | int(11) | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
procedure_title_map
确定培训特定程序需要titles
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| uid | int(11) unsigned | NO | PRI | NULL | auto_increment |
| title_uid | int(11) | NO | | NULL | |
| procedure_uid | int(11) | NO | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
并records
保留用户在procedures
表
+---------------+------------------+------+-----+---------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+-----------------------------+
| uid | int(11) unsigned | NO | PRI | NULL | auto_increment |
| procedure_uid | int(11) | YES | | NULL | |
| user_uid | int(11) | YES | | NULL | |
+---------------+------------------+------+-----+---------+-----------------------------+
我的问题是如何获得此列表:
+----------+-------------+----------+---------------+-------------------------+
| user_uid | record_uid | required | procedure_uid | training_result |
+----------+-------------+----------+---------------+-------------------------+
| 1023 | NULL | Y | 285 | N (Needed Training) |
| 1131 | 234 | Y | 285 | T |
| 1175 | 424 | N | 285 | T (Trained) |
| 323 | NULL | N | 285 | NULL (No Need Training) |
| 1077 | NULL | Y | 285 | N |
+----------+-------------+----------+---------------+-------------------------+