[英]PHP MySql get data from a table and left join to the same table
我有這個表名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');
任何幫助贊賞。
謝謝
你能試試嗎?
SELECT a.level, b.level ParentLeve , IFNULL(b.id,0) FROM
MyLevels a left join MyLevels b on a.id=b.ParentLevelId
請試試這個。
select c.level as level, p.level as parent_level, c.id-p.id as distance_from_parent
from MyLevels AS p
JOIN MyLevels AS c on p.id = c.ParentLevelId
只是另一個版本添加到樂趣中。
我認為操作系統想要獲得基本距離,在這種情況下是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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.