update2:为了更好地理解,这里有一个伪代码(我确信这不是最好的编码方式),我需要的是sql请求,而不是js/java/…:
map_id = 2
desiredResult = []
direct = []
maybeContainDirectBird = []
possibleIndirect = []
indirect = []
direct = selectAllBirdFromMapId(map_id)
foreach (element of direct){
foreach (map of element.maps){
possibleIndirect = selectAllBirdFromMapId(map)
foreach (possibleBird of possibleIndirect){
foreach (mapLvl2 of possibleBird.maps){
maybeContainDirectBird = selectAllBirdFromMapId(mapLvl2)
if (maybeContainDirectBird contain >1 element of direct){
indirect.push(possibleBird)
}
}
}
}
}
desiredResult.push(direct)
desiredResult.push(indirect)
selectAllBirdFromMapId(id){
return array of bird object with mysql request "Select * FROM part
where map_id=&id"
example : [{bird_id:2, maps:[1,2,3]}]
}`
更新1:在我看来,很难理解我需要什么,我删除了这个列 postion
和更新的图像
我需要使用map\ id的直接关系(红圈)数据,以及两个红圈之间的一级关系(灰色圈)中的间接关系(灰色圈),但不需要没有关系或更深层的关系(蓝色圈)
我不知道如何命名我的问题。。。我需要帮助请求我的mysql数据库。
我有一张table part
使用:
|id | map_id | bird_id |
1 1 1
2 1 2
3 1 3
4 1 4
5 2 2
6 2 5
7 2 8
8 2 6
9 3 2
10 3 10
11 3 5
12 4 5
13 4 9
14 5 5
15 5 4
16 6 6
17 6 3
18 7 6
19 7 7
我需要选择每一个部分,是直接或一步深入的关系,一个特定的部分。例如,如果我设置 where map_id = 1
它应该会回到我身边:
|id | map_id | bird_id |
1 1 1
2 1 2
3 1 3
4 1 4
6 2 5
8 2 6
14 5 5
15 5 4
16 6 6
17 6 3
以下是我的数据库的图形版本:
如果我想统计每一个鸟在绿色的关系与1步更深入,我需要得到几个黄色+棕色+深棕色的关系(红圈=直系鸟,灰圈=一步深系鸟,蓝圈是我不需要的鸟)。
在这个例子中,我知道 id
但我的数据库更大,我需要提出要求,在任何情况下的鸟工作 count
/ id
/ map_id
谢谢你的帮助
暂无答案!
目前还没有任何答案,快来回答吧!