【发布时间】:2015-10-21 12:07:07
【问题描述】:
我有 3 张桌子:
+-----+----------+ +-----+----------+-------+ +-----+----------+-------+
| id | A_id | | A_id| B_id | value | | B_id| B_id_ | value |
+-----+----------+ +-----+----------+-------+ +-----+----------+-------+
| 1| 5| | 5| 1| aa| | 1| 2| zzxx|
+-----+----------+ +-----+----------+-------+ +-----+----------+-------+
| 2| 3| | 3| 3| bb| | 2| | vvyy|
+-----+----------+ +-----+----------+-------+ +-----+----------+-------+
| 3| 4| bbll|
+-----+----------+-------+
| 5| | oopp|
+-----+----------+-------+
| 4| 5| mmnn|
+-----+----------+-------+
我需要使用什么 SELECT 语句,以便输出看起来像这样(table3 可以深入到它自身的 4 个级别):
+----+------------------------------+
| id | value |
+----+------------------------------+
| 1| aa\zzxx\vvyy|
+----+------------------------------+
| 2| bb\bbll\mmnn\oopp|
+----+------------------------------+
由于我对 DB 和 SQL 没有太多经验,这对我来说很难。而且我对如何做到这一点没有任何远见。
这必须在 MySQL 中完成。 我读过的最难的事情是 MySQL 中的递归查询,因为它不存在,所以人们必须模拟它。我已经阅读了一些关于递归查询的 SO 主题,但我知道那不适合我。
感谢任何帮助。
【问题讨论】:
-
这是某种反向练习,猜猜查询?为什么不告诉我们这些结果的条件是什么?
-
table2和table3有关系吗?
-
除标点符号外,您在同一个表中有两列称为 b_id。你不认为这会给问题增加不必要的复杂性和混乱吗?
-
我想我已经展示过了。它是第二张表中的 collum
B_id(foreign_key),这是第三张表的主键 -
@Strawberry 它被称为
B_id_,所以人们可以理解这是第三张表的键,但该列的名称不同