【发布时间】:2017-09-25 03:35:23
【问题描述】:
我有三个包含以下数据的表:
countries
+-----+----------+
| id | name |
+-----+----------+
| 1 | country1 |
| 7 | country2 |
+-----+----------+
states
+-----+----------+------------+
| id | name | country_id |
+-----+----------+------------+
| 3 | state1 | 1 |
| 9 | state2 | 7 |
| 11 | state3 | 1 |
| 17 | state4 | 1 |
+-----+----------+------------+
cities
+-----+----------+------------+
| id | name | state_id |
+-----+----------+------------+
| 5 | city1 | 3 |
| 6 | city2 | 9 |
| 22 | city3 | 9 |
| 24 | city4 | 17 |
| 25 | city5 | 11 |
| 26 | city6 | 11 |
+-----+----------+------------+
我正在尝试选择所有数据,以便生成以下输出:
+-----+---------------------------+--------+-------+
| id | table_name | country | state | city |
+-----+---------------------------+--------+-------+
| 1 | countries | country1 | | |
| 3 | states | country1 | state1 | |
| 5 | cities | country1 | state1 | city1 |
| 11 | states | country1 | state3 | |
| 25 | cities | country1 | state3 | city5 |
| 26 | cities | country1 | state3 | city6 |
| 17 | states | country1 | state4 | |
| 24 | cities | country1 | state4 | city4 |
| 7 | countries | country2 | | |
| 9 | states | country2 | state2 | |
| 5 | cities | country2 | state2 | city2 |
| 5 | cities | country2 | state2 | city3 |
+-----+---------------------------+--------+-------+
我知道这很有挑战性,但我想知道是否可以使用 SELECT 生成这样的结果,还是只能以编程方式完成?谢谢!
【问题讨论】:
-
这和js有什么关系?
-
去看看joins
-
不,你不能使用联合,联合要求所有表中的列数相同
-
@Jim Macaulay 如果您提供虚拟值,您可以..