我发现了一篇非常好的文章,它允许我创建SQL分层数据here。但是,这只是我想要解决的挑战的第一部分。我想只使用一个SQL语句或事务来搜索此数据中最适合的路径。
从链接我们有这棵树:下面的数据树,带有以下SQL表格表示。
+-------------+----------------------+-----+-----+
| category_id | name | lft | rgt |
+-------------+----------------------+-----+-----+
| 1 | ELECTRONICS | 1 | 20 |
| 2 | TELEVISIONS | 2 | 9 |
| 3 | TUBE | 3 | 4 |
| 4 | LCD | 5 | 6 |
| 5 | PLASMA | 7 | 8 |
| 6 | PORTABLE ELECTRONICS | 10 | 19 |
| 7 | MP3 PLAYERS | 11 | 14 |
| 8 | FLASH | 12 | 13 |
| 9 | CD PLAYERS | 15 | 16 |
| 10 | 2 WAY RADIOS | 17 | 18 |
+-------------+----------------------+-----+-----+
让我们说我有输入:(电子,便携式电子,MP3播放器,FLASH)和另一个例子(电子,LCD)。
" 最佳契合路径的定义"是最长的路径,包括我指定的所有节点,它们从根节点建立一条完整的路径。
对于我的第一次输入,最佳杉木的路径是:
+----------------------+
| name |
+----------------------+
| ELECTRONICS |
| PORTABLE ELECTRONICS |
| MP3 PLAYERS |
| FLASH |
+----------------------+
对于第二个输入:
+----------------------+
| name |
+----------------------+
| ELECTRONICS |
+----------------------+
在第二个例子中,我们可以看到从根TECONICS到LCD没有完整的路径。
我想知道如何创建允许我这样做的SQL查询或事务。我允许修改表或添加新表,这将使这更容易。 如何为最适合的路径进行查询/交易?