首页 > 解决方案 > 如何在mysql中查询文件夹1和2而不是任何其他文件夹的项目?

问题描述

我的 mysql 数据库中有“项目”和“文件夹”。项目可以属于一个或多个文件夹。我有拥有文件夹权限的用户。为了让用户查看该项目,她需要拥有该项目所属的每个文件夹的权限。

假设我们有项目:
项目 1(在文件夹 1 和 2 中)
项目 2(在文件夹 2 中)
项目 3(在文件夹 1,2 和 3 中)

用户拥有文件夹 1 和 2 的权限。它应该看到项目 1 和 2(不是 3,因为她没有文件夹 3 的权限)。

如何查询具有文件夹 1 和 2 权限的用户的项目?

这是测试数据库的 sql 转储:

CREATE TABLE `folder_item` (
  `item_id` int DEFAULT NULL,
  `folder_id` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `folders` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `items` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `folder_item` (`item_id`, `folder_id`) VALUES
(1, 1),
(2, 2),
(3, 1),
(3, 2),
(1, 2),
(3, 3);

INSERT INTO `folders` (`id`, `title`) VALUES
(1, 'Folder 1'),
(2, 'Folder 2'),
(3, 'Folder 3');

INSERT INTO `items` (`id`, `title`) VALUES
(1, 'Item 1'),
(2, 'Item 2'),
(3, 'Item 3'),
(4, 'Item 4');

标签: mysql

解决方案


推荐阅读