MySQL从多对多关系中检索NULL记录

时间:2015-10-14 20:53:11

标签: mysql many-to-many

我有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                       |
+----------+-------------+----------+---------------+-------------------------+

0 个答案:

没有答案