从外键

时间:2016-10-11 11:32:46

标签: php python mysql sql json

我在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中的任何一个例子,建议我可以用来创建我的数据的工具或算法吗?

抱歉我的英文不好

0 个答案:

没有答案