MySQL:如果第二张表具有与第三张表匹配的数据,则从第一张表中进行选择

当提供的USER_ID具有所有必需的授权并且没有任何禁止时,我试图从PAGES表中获取数据。

页数

|  ID     |
|---------|
|   1     |
|   2     |
|   3     |
|   4     |
|   5     |

USERS_AUTHORIZATIONS

|  ID     |  USER_ID  |  AUTHORIZATION_ID  |  PROHIBITION_ID  |
|---------|-----------|--------------------|------------------|
|   1     |     1     |         1          |       NULL       |
|   2     |     1     |        NULL        |        1         |
|   3     |     1     |         2          |       NULL       |
|   4     |     2     |         1          |       NULL       |
|   5     |     2     |         3          |       NULL       |
|   6     |     2     |        NULL        |        2         |
|   6     |     2     |        NULL        |        1         |

PAGES_AUTHORIZATIONS

|  ID     |  PAGE_ID  |  AUTHORIZATION_ID  |  PROHIBITION_ID  |
|---------|-----------|--------------------|------------------|
|   1     |     1     |         1          |       NULL       |
|   2     |     2     |        NULL        |        1         |
|   3     |     3     |         2          |       NULL       |
|   4     |     3     |         1          |       NULL       |
|   5     |     4     |         3          |       NULL       |
|   6     |     4     |        NULL        |        2         |

提供user_id时,我试图以以下行为获取页面:

  • 第1页只有一个授权,如果发送的用户拥有该授权,则将获取该授权
  • 第2页只有一个禁令,如果用户有禁令则不会被提取
  • 第3页有2个授权,如果用户拥有所有授权,则将提取该授权
  • 第4页有2个禁令,如果用户有任何禁令,则不会提取该禁令
  • 第5页没有授权和禁止,它将始终被提取

我尝试自己使用多个联接来完成此操作,但我没有成功,即使用户只有1个授权,并且没有获取没有授权和禁止的页面,我敢打赌最好还是获取该页面。

我尝试搜索但没有找到想要的东西,主要是因为我很难找到关键字来搜索这种情况...

感谢您的帮助,对不起我的英语。

评论