I have three tables with the following data:
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     |
+-----+----------+------------+
I’m trying to select all data so that I can generate the following output:
+-----+---------------------------+--------+-------+
| 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 |
+-----+---------------------------+--------+-------+
I know it’s challenging, but I was wondering if that is possible to generate such a result with a SELECT or can it only be done programmatically? Thanks!