0

私はこのSQLクエリに苦労しています。

次のクエリはv2_modules.idを返します。これをv2_modulesテーブルで再度実行して、parentIdとしてv2_modules.idを取得したすべての行を取得します。

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

必要な結果をどのように取得すればよいかについて、私はここで打たれました。

4

2 に答える 2

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

結合条件を逆にすることができます、それがあなたが探していたものであるかどうかはわかりません

于 2013-02-13T16:29:01.673 に答える
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
于 2013-02-13T16:29:09.340 に答える