PHP MySql从表中获取数据并将左连接保存到同一个表中

时间:2017-02-06 05:26:40

标签: php mysql database

我有这个表名MyLevels。​​

 id  | level | ParentLevelId
 ---------------------
 1   | basic | 1
 2   | silver| 1
 3   | gold  | 2
 4   | stone | 3
 5   | wood  | 2

在此表上,每个级别都有父级别。例如,"gold"级别的父ID是2.这意味着父级别为"silver" 所以我需要一个查询来获取html表中的以下内容: 父级别来自ParentLevelId

level  | parent level | distance From Basic
-------------------------------------------
basic  | basic        | 0
silver | basic        | 1
gold   | silver       | 2

basic引用到每个级别远离basic级别的数字的距离 例如,wood级别ID为5和5 - 1 = 4。这意味着它远离basic级别的4级 这是我唯一的代码:

$conn->prepare('SELECT id, level, ParentLevelId FROM MyLevels');

任何帮助表示感谢。

谢谢

3 个答案:

答案 0 :(得分:1)

你可以尝试一下吗?

   SELECT a.level, b.level ParentLeve , IFNULL(b.id,0) FROM 
MyLevels a left join MyLevels b on a.id=b.ParentLevelId

答案 1 :(得分:1)

请试一试。

<div class="progress">
    <div class="progress-bar" role="progressbar" aria-valuenow="70"
        aria-valuemin="0" aria-valuemax="100" style="width:70%">
        <span class="sr-only">70% Complete</span>
    </div>
</div>

答案 2 :(得分:1)

只是另一个版本添加到乐趣中。

我认为操作系统想要获得基本距离,在这种情况下是id = 1.

无论如何,写这个的另一种方式是......

SELECT 
      b.level AS level, 
      a.level AS parent_level,
      b.id-1 AS distance_from_basic 
      FROM MyLevels a
        JOIN MyLevels b ON a.id = b.ParentLevelId
            ORDER BY b.id

这是根据OP提供的期望结果进行测试的。

结果:

Level   Parent Level    Distance From Basic
basic   basic                  0
silver  basic                  1
gold    silver                 2
stone   gold                   3
wood    silver                 4