我如何在mysql中编写我的选择查询?

时间:2015-10-29 13:12:08

标签: mysql

Table A
-------------------------------------
| id    | parent_id | title_code    |
-------------------------------------
| 1     | 1         | 3             |
| 23    | 1         | 2             |
| 36    | 1         | 2             |
| 40    | 23        | 5             |
| 38    | 36        | 5             |
| 17    | 40        | 8             |
-------------------------------------

Table B
-------------------------------------
| id    | title                     |
-------------------------------------
| 3     | Title1                    |
| 2     | Title2                    |
| 5     | Title4                    |
| 8     | Title3                    |
-------------------------------------

Desired Result:

---------------------------------
| id    | child     | parent    |
---------------------------------
| 1     | Title1    | Title1    |
| 23    | Title2    | Title1    |
| 36    | Title2    | Title1    |
| 40    | Title4    | Title2    |
| 38    | Title4    | Title2    |
| 17    | Title3    | Title4    |
---------------------------------

3 个答案:

答案 0 :(得分:2)

经过测试和工作的查询:(基于@ xQbert的查询 - 进行一些更改)

SELECT Main.id, Child.title as Child, Parent.title as Parent
FROM table_A as Main
INNER JOIN table_A as Sub
ON Sub.id = Main.parent_id
INNER JOIN table_B as Parent
ON Main.title_code = Parent.id
INNER JOIN table_B as Child
ON Child.id = Sub.title_code

答案 1 :(得分:1)

看起来你需要自己加入A两个表的别名,然后将它们分别连接到B。

也许是这样的。

SELECT Main.ID, Child.Title as Child, Parent.Title as parent
FROM A as Main
INNER JOIN A as Sub
 on Sub.ID = Parent.Id
INNER JOIN B as Parent
 on A.Title_Code = B.ID
INNER JOIN B as Child
 on Child.ID = Sub.Title_Code

答案 2 :(得分:0)

类似的东西:

SELECT table_a.id, child.title AS child, parent.title AS parent 
FROM table_a 
LEFT JOIN table_b AS parent ON parent.id=table_a.parent_id
LEFT JOIN table_b AS child  ON  child.id=table_a.child_id
相关问题