动态创建行MySql

时间:2011-05-18 03:13:45

标签: mysql sql left-join dynamic

我一直在使用joomla 1.6,我需要使用两次表的相同列:

有类别,每个类别都可以有子类别。

在另一个表中我有一个指向该类别的id,所以然后我创建一个JOIN以用'title'替换id(类别的描述)

让我说我有这个类别:

- PARENT1
    * SUB1
    * SUB2

- PARENT2
    * SUB1
    * SUB2

TABLE CATEGORIES:
    id     |     title     |     parent_id    
--------------------------------------------
    0      |      ROOT     |        NULL
    1      |     PARENT1   |         0
    2      |      SUB1     |         1
    3      |      SUB2     |         1
    4      |     PARENT2   |         0
    5      |      SUB1     |         4
    6      |      SUB2     |         4
--------------------------------------------

TABLE DATA:
    id     |      name     |     cat_id
--------------------------------------------
    0      |    p1_sub1    |         2
    1      |    p1_sub1    |         2
    2      |    p1_sub2    |         3
    3      |    p2_sub1    |         5
    4      |    p2_sub2    |         6
    5      |    p1_sub2    |         3
    6      |    p2_sub2    |         6
--------------------------------------------

所以我使用此查询来获取cat_id的相应标题:

SELECT data.name, cat.title FROM table_data AS data
LEFT JOIN table_categories AS cat ON data.cat_id = cat.id

这很好用,但现在我还要从title获取parent category

TABLE RESULT:
   name    |     title     |     parent_title    
--------------------------------------------
  p1_sub1  |      SUB1     |        :S
--------------------------------------------

我的意思是,要执行此操作,我应该再次加入cat.parent_id = cat.id,但我需要在查询中添加另一个title列,以便......

任何想法????

日Thnx !!!

1 个答案:

答案 0 :(得分:0)

这应该有效:

SELECT data.name AS name, cat.title AS title, cat2.title AS parent_title
FROM   table_data AS data
       LEFT JOIN table_categories AS cat ON data.cat_id = cat.id
       LEFT JOIN table_categories AS cat2 ON cat.parent_id = cat2.id