选择与其他行有直接和间接关系且具有特定id的行

3duebb1j  于 2021-07-29  发布在  Java
关注(0)|答案(0)|浏览(257)

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 谢谢你的帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题