Hi,

I have a table of directories. Each row represents a directory, which holds his name and desc. Another table lists sub-directories from each directory source to its sub-directories targets.

dirs:
+----------+--------------+------------+
| dir_id   | dir_name     | dir_desc   |
+----------+--------------+------------+
|        0 |         root |   root dir |
|       11 |           d1 |  dir no. 1 |
|       12 |           d2 |  dir no. 2 |
|       21 |           d3 |  dir no. 3 |
|       22 |           d4 |  dir no. 4 |
|       23 |           d5 |  dir no. 5 |
|       31 |           d6 |  dir no. 6 |
|       32 |           d7 |  dir no. 7 |
|       41 |           d8 |  dir no. 8 |
|       51 |           d9 |  dir no. 9 |
|       52 |          d10 | dir no. 10 |
|       61 |          d11 | dir no. 11 |
+----------+--------------+------------+
12 rows in set (0.00 sec)

subdirs:
+------------+------------+
| dir_source | dir_target |
+------------+------------+
|          0 |         11 |
|          0 |         12 |
|         11 |         21 |
|         11 |         22 |
|         11 |         23 |
|         12 |         31 |
|         22 |         31 |
|         22 |         32 |
|         23 |         52 |
|         31 |         41 |
|         41 |         51 |
|         41 |         52 |
|         52 |         61 |
+------------+------------+
13 rows in set (0.00 sec)

root (0)
   +d1 (11)
   |  +d3 (21)
   |  +d4 (22)
   |  |  +d6 (31)
   |  |  |  +d8 (41)
   |  |  |     +d9 (51)
   |  |  |     +d10 (52)
   |  |  |         +d11 (61)
   |  |  +d7 (32)
   |  +d5 (23)
   |     +*d10* (52) -reference
   +d2 (12)
      +*d6* (31) -reference

Note that a directory can be contained in several parent directories (as long as it doesn't creates circles) - "references".

Example: I want to search on all the directories under 'd4' that contain the word "music".

I got several solutions, but not satisfying:
A) Loop from 'd4' to sub-dirs in first level, and use buffer list for next iterations when going deeper into levels. [not good: there can be many sub-dirs with descendants, and the loop will iter more; slow on searches]. B) Storing the directory tree structure in the form of 'root/d1/d4/d6' and etc. [not good: personally I can't use it (specific implementation restriction)]. C) Descendants sub-dirs connections to sub-dirs on deeper levels, so searching will go over the first level sub-dirs and the descendants sub-dirs. [not good: there can be many sub-dirs and there would be many descendants sub-dirsl; duplicating descendants on references].

Do you have any other suggestions? What's the better way?


-Thanks in advance... :-)

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to