【发布时间】:2017-06-30 06:07:29
【问题描述】:
对于这个例子,我们有四个表。
- 困难
- 游戏
- 设备
- 时间表
此查询的目标是获得一个包含单个游戏的时间表,然后根据游戏行中的 ParentID 获取与该游戏相关的所有游戏。
下面的 JSON 数据详细解释了这一点,我相信
/* GAMES */ {
id: 1,
name: 'Mario Bros',
parent: null
}, {
id: 2,
name: 'Super Mario Bros',
parent: 1
}, {
id: 3,
name: 'Crazy Kong',
parent: 1
}, {
id: 4,
name: 'Mario Sunshine',
parent: 2
}, {
id: 5,
name: 'Dog Fights',
parent: null,
}, {
id: 6,
name: 'War Thunder',
parent: 5
}, {
id: 7,
name: 'Pacman',
parent: null
}
/* SCHEDULE */ {
difficulty: 1,
weekday: 1,
game: 1
}, {
difficulty: 1,
weekday: 1,
game: 5
}, {
difficulty: 2,
weekday: 1,
game: 7
}
在此数据中,日程表由两场比赛(1, 5) 组成,在比赛数据中,ID 为(1) 的比赛通过parent 与三场比赛相关:
Super Mario Bros 和 Crazy Kong 与数据直接相关,parent 设置为 (1),Mario Sunshine 与游戏 ID (1) 间接相关,因为它的父级设置为 Super Mario Bros @987654330 @
另一个 ID 为 (5) 且难度 ID 为 1 的游戏有一个与之相关的游戏,即 War Thunder,其父级设置为 5。
吃豆人的难度为2,所以永远不会出现,除非你从赛程中搜索难度2,否则其他6场比赛永远不会出现。
我需要一个查询,它可以根据日程表中的基本条目找到所有相关游戏,该条目由难度 ID 检索。
由如下查询返回的游戏:
SELECT ALL RELATED GAMES FROM SCHEDULE WHERE DIFFICULTY = 1
应该是:
- 马里奥兄弟
- 超级马里奥兄弟
- 疯狂的金刚
- 马里奥阳光
- 狗打架
- 战争雷霆
这是一个 SQLFiddle:http://sqlfiddle.com/#!9/f7583/5
目标是根据表中所有行的父 id 递归查找原始 id 的所有条目。
关系:
'Mario Bros': [
'Super Mario bros': [ 'Mario Sunshine' ],
'Crazy Kong': [],
],
'Dog Fights': [
'War Thunder'
]
【问题讨论】:
标签: mysql