2013-02-13 105 views
0

我在用這個SQL查詢來鍛鍊。使用查詢結果在同一個表上獲得另一個結果

下面的查詢返回我v2_modules.id然後我想在v2_modules表再次運行得到,因爲PARENTID

select distinct v2_modules.id,v2_modules.name, v2_modules.url, v2_modules.parentId 
from v2_modules 
      inner join v2_roles_permissions_modules 
       on v2_modules.id = v2_roles_permissions_modules.moduleId 
        inner join v2_admin_roles 
         on v2_roles_permissions_modules.roleId = v2_admin_roles.roleId 
          inner join admin 
           on v2_admin_roles.adminID = 89 

我在這裏打的誰得到了v2_modules.id的所有行我該如何獲得所需的結果。

+0

'admin'表來自哪裏? – 2013-02-13 16:26:41

回答

2

你可以用結果作爲一個子查詢,做一套攜手同臺:

select * 
from 
(
select distinct v2_modules.id,v2_modules.name, v2_modules.url, v2_modules.parentId 
from v2_modules 
      inner join v2_roles_permissions_modules 
       on v2_modules.id = v2_roles_permissions_modules.moduleId 
        inner join v2_admin_roles 
         on v2_roles_permissions_modules.roleId = v2_admin_roles.roleId 
          inner join admin 
           on v2_admin_roles.adminID = 89 
) 
as table1 
inner join v2_modules on v2_modules.parentId = table1.id 

連接條件是可以逆轉的,我不知道這是否是你要找的

的一個
+0

謝謝巴勃羅。那正是我想要的。 – nasaa 2013-02-13 16:30:47

0

是否是這樣的?

select distinct 
    c.id,c.name, c.url, c.parentId 
from 
    v2_modules m inner join 
    (select distinct 
     m.id,m.name, m.url, m.parentId 
    from 
     v2_modules m inner join 
     v2_roles_permissions_modules p on 
     m.id = p.moduleId 
     inner join v2_admin_roles r on 
     p.roleId = r.roleId 
     full outer join admin a 
    where 
     r.adminID = 89) c on 
    m.parentid = c.id 
相關問題