2013-01-04 37 views
1

我在SQL數據庫下表如何在我的sql中使用多個連接來重新數據?

用戶_

userId | userName 

ORGANIZATION_

org_id | parent_org_id_ | name 

ROLE_

roleId | roleName 

user_roles

userId | roleId 

users_organization

userId | organizationId 

...現在我想是從org_Id =?和role_name =?我想從用戶名錶中檢索用戶的名稱,該名稱與具體角色名稱相關的組織。任何人都可以告訴我..如何做... ..?

+0

你必須使用選擇和[內部連接(http://dev.mysql.com/doc/refman/5.0/en/join.html) – rene

回答

2

嘗試::

Select * 
from 
user_ u 
INNER JOIN user_roles ur on (u.userId = ur.userId) 
INNER JOIN role_ r on (ur.roleId = r.roleId) 

INNER JOIN users_organization uo (u.userId = uo.userId) 
INNER JOIN organization_ o on (uo.organizationId= o.orgId) 
where uo.org_id =? and r.role_name=? 
+0

thanx您的答案,但我想選擇USER_NAME基於特定的org_id和role_name –

+0

已編輯,請立即檢查 –

+1

thanx man ... u guyz永遠是我的一線希望 –

1

如果我理解正確的話(你的問題沒有表關係):

SELECT U.userId 
    , U.userName 
    FROM user_ U 
    INNER JOIN users_organization UO ON UO.userId = U.userId 
    INNER JOIN user_roles UR ON UR.userId = U.userId 
    WHERE UO.organizationId = organizationId 
     AND UR.roleName = roleName; 

的參數是organizationIdroleName

1

試試下面的建議。

SELECT u.userName 
FROM user_ u 
    , role_ r 
    , users_organization uo 
    , user_roles ur 
WHERE r.roleName = ? 
    AND uo.organizationId = ? 
    AND ur.userId = u.userId 
    AND ur.roleId = r.roleId 
    AND u.userId = uo.userId 
相關問題