不工作
SELECT a.name, atn.name
FROM t1 a
JOIN t2 ap ON a.id = ap.area_id
JOIN t3 atn ON atn.id = ap.parent_id
我有一个表t1,其中包含区域名称及其类型(如pin,ward和简单区域名称)和表t2及其映射和表t3,其中包含类型名称及其ID。
我想要一个有三列(区域名称,别针,区域)的结果,即结果应该是哪个区域位于别针和区域内。
t1
:
--------------------------
| id | area name | type |
---------------------------
| 1 | a | 5 |
| 2 | b | 8 |
| 3 | x | 7 |
| 4 | z | 8 |
| 5 | pq | 8 |
---------------------------
t2
:
------------------------------
| id | area_id | parent_id |
------------------------------
| 1 | 2 | 1 |
| 2 | 2 | 3 |
| 3 | 4 | 1 |
| 4 | 5 | 3 |
-----------------------------
t3
:
------------------
| id | name |
------------------
| 5 | pin |
| 7 | ward |
| 8 | area |
------------------
结果:
--------------------------
| area | pin | ward |
--------------------------
| b | a | x |
| z | a | |
| pq | | x |
--------------------------
有人知道怎么弄这个,请帮帮我。我不知道如何获得这个价值。我试过但找不到任何东西。
答案 0 :(得分:0)
只是一个猜测。按父类型透视父母姓名
SELECT a.name,
max(case when atn.name = 'pin' then p.name end) as pin
max(case when atn.name = 'ward' then p.name end) as ward
FROM t2 ap
JOIN t1 a ON a.id = ap.area_id
JOIN t1 p ON p.id = ap.parent_id
JOIN t3 atn ON atn.id = p.type
GROUP BY a.name