2013-10-11 88 views
0

我正在編寫一個PHP應用程序,它有4個級別的用戶 admin,manager,group,client admin將創建管理員,管理員將創建組。 以外的所有客戶端可以創建客戶 我有一個用戶表等等 ID主要汽車 USER_NAME VARCHAR獨特 經理ID GROUPID 用戶類型INT(一箇中4型)申請權限和創建查詢

如果客戶端不屬於以下領域經理managerid和groupid下的任何經理或組將屬於0 如果客戶屬於它將被分配的組groupid 如果組屬於一個經理,它將被分配一個managerid 所以一個經理可以有許多組和一個組可以有多個客戶端 網站以登錄頁面開始,在成功登錄時依賴在usertype主頁上顯示客戶端列表。 如果它是個人客戶,它只會顯示他們的名字。 如果它是一個組,它將顯示所有客戶在他們的組和他們創建的個人 如果它是一個經理,它應該顯示在他們所有的組和個人創建的所有客戶。 我在尋找的是實現這一工作流程的優化方式。 我可以得到管理員名單(這將是所有),組的列表 - 每個人都有他們的組編號 但我對管理員列表將如何創建有點困惑。 我可以找到一個列表,有managerid和個人沒有groupid,並首先找出在這個經理之下的組,並獲得所有客戶端擁有這些組id。但我認爲這可能是 用sql查詢實現我需要建立這樣的查詢幫助。 如果可能,我想制定一個查詢,讓我這個名單。 我使用codeIgniter來建立這個網站。 因此,如果對CI採用查詢,它將非常壯觀。 感謝

回答

0
 SELECT * 
     from 
      UserTable 
     WHERE 
      groupid 
     in (select groupid from UserTable where managerid='id') 

下面的代碼可用於從活動記錄

 $this->db->select('u1.*'); 
     $this->db->from('UserTable u1'); 
     $this->db->join('UserTable u2', 'u1.groupid = u2.groupid'); 
     $this->db->where('u2.managerid', $id); 
     $this->db->get(); 

得到的數據,這將產生以下查詢

 SELECT `u1`.* 
     FROM (`UserTable` u1) 
     JOIN `UserTable` u2 ON `u1`.`groupid` = `u2`.`groupid` 
     WHERE `u2`.`managerid` = 1 
+0

是的,這將是SQL查詢來獲取結果爲特定的ID。我想知道這將如何應用於codeigniter的主動記錄。但仍然是一個很好的領導,並將在這個方向上工作。 希望有人對問題的第一部分有一些答案。 – user1420967

+0

我已經添加了一個新的查詢和活動記錄代碼,結果將與之前的查詢相同。 – Nishanthan