我在MySQL中有一些表及其数据,但我需要根据它的外键检索树形显示中的所有数据。
表结构
表格
+=====================================================================+
| column | type | nullable | key | foreign_key | rel_tbl | rel_col |
|========|======|==========|========|=============|=========|=========+
|Id |INT | NO |PRIMARY |NO | NO | NO |
|Posts |string| NO | NO |NO | NO | NO |
|PostMed |INT | yes |INDEX |yes | PostMed | Id |
|User |INT | NO |INDEX |yes | User | Id |
+=====================================================================+
表用户
+======================================================================+
| column | type | nullable | key | foreign_key | rel_tbl | rel_col |
|=========|======|==========|========|=============|=========|=========+
|Id |INT | NO |PRIMARY |NO | NO | NO |
|Name |string| NO | NO |NO | NO | NO |
|Email |string| NO |unique |NO | NO | NO |
|UserPhoto|string| NO |unique |Yes |UserPhoto|Id |
+======================================================================+
表UserPhoto
+======================================================================+
| column | type | nullable | key | foreign_key | rel_tbl | rel_col |
|========|======|==========|========|=============|=========|=========+
|Id |INT | NO |PRIMARY |NO | NO | NO |
|Value |string| NO | NO |NO | NO | NO |
|Type |string| NO | NO |NO | NO | NO |
+=====================================================================+
Table PostMed
+======================================================================+
| column | type | nullable | key | foreign_key | rel_tbl | rel_col |
|========|======|==========|========|=============|=========|=========+
|Id |INT | NO |PRIMARY |NO | NO | NO |
|Value |string| NO | NO |NO | NO | NO |
|Type |string| NO | NO |NO | NO | NO |
+=====================================================================+
这是数据
发表
+=============================+
|Id | Posts | PostMed | User |
|===|========|=========|======|
|1 |Hello | 1 | 1 |
|2 |World | Null | 1 |
|3 |Dominate| 2 | 2 |
+=============================+
用户
+====================================+
|Id | Name | Email |UserPhoto|
|===|=======|==============|=========|
|1 |kzul | kzvl@mail.com|1 |
|2 |jhon | jhon@mail.com|2 |
+====================================+
UserPhoto
+===========================+
|Id | Value | Type |
|===|===========|===========|
|1 |kzul.jpg | image/jpeg|
|2 |jhon.png | image/png |
+===========================+
PostMed
+===========================+
|Id | Value | Type |
|===|===========|===========|
|1 |kzul.jpg | image/jpeg|
|2 |jhon.mp3 | audio/mp3 |
+===========================+
正如您所看到的,表格帖子有2个外键列 PostMed 和 用户 , Postmed 列与列 Id 引用的表 PostMed 有关系,同时 < em>用户 列与列 Id 引用的表用户有关。 所以任务是当我尝试从表帖子中检索所有数据时,它必须是JSON类型并在树中格式化如下:
[
{
"Id": 1,
"Posts": "Hello",
"PostMed": {
"Id": 1,
"Value": "kzul.jpg",
"Type": "image/jpeg"
},
"User": {
"Id": 1,
"Name": "kzul",
"Email": "kzvl@mail.com",
"UserPhoto":{
"Id": 1,
"Value": "kzul.jpg",
"Type": "image/jpeg",
}
}
},
{
"Id": 2,
"Posts": "World",
"PostMed": null,
"User": {
"Id": 1,
"Name": "kzul",
"Email": "kzvl@mail.com"
"UserPhoto":{
"Id": 1,
"Value": "kzul.jpg",
"Type": "image/jpeg",
}
}
},
{
"Id": 3,
"Posts": "Dominate",
"PostMed": {
"Id": 2,
"Value": "jhon.mp3",
"Type": "audio/mp3"
},
"User": {
"Id": 2,
"Name": "jhon",
"Email": "jhon@mail.com"
"UserPhoto":{
"Id": 2,
"Value": "jhon.png",
"Type": "image/png",
}
}
}
]
如果我检索其他具有外键的表,它将如上所示。 在PHP或Python中的任何一个例子,建议我可以用来创建我的数据的工具或算法吗?
抱歉我的英文不好