我想请你帮我解决存储为闭包表的分层数据结构的问题.
我想用这个结构来存储我的网站菜单.一切正常,但问题是我不知道如何按自定义顺序对确切的子树进行排序.目前,树按照项目添加到数据库的顺序排序.
我的结构基于Bill Karwin关于Closure Tables 的文章以及其他一些帖子.
这是我的MySQL数据库结构,包含一些DEMO数据:
--
-- Table `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_czech_ci NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO `category` (`id`, `name`, `active`) VALUES
(1, 'Cat 1', 1),
(2, 'Cat 2', 1),
(3, 'Cat 1.1', 1),
(4, 'Cat 1.1.1', 1),
(5, 'Cat 2.1', 1),
(6, 'Cat 1.2', 1),
(7, …Run Code Online (Sandbox Code Playgroud) 我有一个带有该结构的'user_score'表:
|id|user_id|group_id|score| timestamp |
| 1| 1| 1| 500| 2013-02-24 18:00:00|
| 2| 2| 1| 200| 2013-02-24 18:01:50|
| 3| 1| 2| 100| 2013-02-24 18:06:00|
| 4| 1| 1| 6000| 2013-02-24 18:07:30|
Run Code Online (Sandbox Code Playgroud)
我需要做的是从该表中选择来自确切组的所有用户.选择该组中的实际(根据时间戳)得分及其排名.
我所拥有的是(编辑:在Jocachin的评论之后我发现我自己的查询不能像我预期的那样工作,对所有人抱歉):
SELECT user_id, score, @curRank := @curRank + 1 AS rank
FROM (
SELECT *
FROM (
SELECT * FROM `user_score`
WHERE `group_id` = 1
ORDER BY `timestamp` DESC
) AS sub2
GROUP BY `user_id`
) AS sub, (SELECT @curRank := 0) r
ORDER BY …Run Code Online (Sandbox Code Playgroud) 在我的旧docker容器中,使用Windows上的docker工具箱创建我能够使用
docker-machine create -d virtualbox --virtualbox-disk-size 50000 default
Run Code Online (Sandbox Code Playgroud)
命令创建具有更多磁盘空间的容器,因为我在其中存储了大图像和/或默认旁边的"创建另一个环境".
自从旧的Docker Toolbox升级到Docker 1.12.0 beta18后,我不知道如何做到这一点,我面临着"低磁盘空间"问题.
我希望能够创建具有更多可用于创建的虚拟机的磁盘空间的默认环境.
请问有机会吗?docker docs没有提到新的Windows版本.
我有一些具有不同结构的表,但包含相同的数据(在示例中它是名称和姓氏).

编辑:演示结构小提琴 - http://sqlfiddle.com/#!2/cce568
但是现在我需要创建一些集合表来存储这些信息+更多细节(例如日期时间,公司名称,职位等).根据剩余字段的上下文,此集合表可以包含多个实体.
有一些模式如何存储这个集体表,好吗?根据Bill Carwin的帖子(/sf/answers/39342131/),我可以将所有这些表加入到一个表中,但如果我需要将一些信息直接添加到此表中,我该怎么办?
提前感谢您的意见.