[英]php mysql query get value of a table with two different ID
我有这个表名 MyLevels。
id | level | ParentLevelId
---------------------
1 | basic | 1
2 | silver| 1
3 | gold | 2
4 | stone | 3
5 | wood | 2
在这张桌子上,每个级别都有一个父级别。 例如, "gold"
级别的父 ID 是 2。这意味着父级别是"silver"
。
所以我需要一个查询来在 html 表中获取以下内容: Parent level来自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');
任何帮助表示赞赏。
谢谢
您可以将表与自身联接以从父 ID 中获取父级别的名称。 再次加入即可获得basic
级别的ID,因此您可以从中减去ID。
SELECT m2.level, m1.level AS parentLevel, m2.id - m3.id AS distanceFromBasic
FROM MyLevels AS m1
JOIN MyLevels AS m2 ON m1.id = m2.parentLevelId
CROSS JOIN MyLevels AS m3
WHERE m3.level = 'basic'
SELECT
ml1.level,
(
SELECT
ml2.level
FROM
MyLevels AS ml2
WHERE
ml2.id = ml1.ParentLevelId
) AS parentLevel,
(
SELECT
ml1.id - ml2.id
FROM
MyLevels AS ml2
WHERE
ml2.level = 'basic'
) AS distanceFromBasic
FROM
MyLevels AS ml1;
请记住,这仅在该列是主键或唯一且该列被用作 parentID 时才有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.