mysql - 如何在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');
解决方案
推荐阅读
- javascript - vue-router beforeEach 函数不返回更新的项目
- javascript - 从 .json 文件一屏显示一组对象
- flutter - Flutter 中的 OverlayEntry 和 Stack 小部件有什么区别?
- node.js - 如何使用 Yarn 1 和工作区部署 TypeScript/Node.js 服务?
- javascript - Fullcalendar 禁用 eventOrder
- java - Java泛型方法产生错误的类型
- cookies - 静态网站是否存储 cookie?
- javascript - Matter.js- 只有bodyA通过body B;但没有其他物体通过bodyA
- concurrent-ruby - 如何取消其他期货?
- bash - 在 repl.it 中运行的 Bash 脚本在 git 别名中出现语法错误