2016-05-15 60 views
0

我有一個下面的「User_Info」。它包含所有用戶信息和每個用戶所屬公司的ID。
創建Mysql查看參數

User_Id | User_Name | Company_Id 
-----------+-----------+-------------- 
1002  | User1  | 113 
1003  | User2  | 114 
1004  | User3  | 111 

我有另一張表「公司」,其中有公司信息及其相關母公司。

id | Company_Name | Parent_Company_Id 
----+-----------------+------------------ 
110 | WALMART   | NULL 
111 | WALMART TEXAS | 110 
112 | WALMART DALLAS | 111 
113 | WALMART HOUSTON | 111 
114 | WALMART KATY | 113 

所需的輸出:

user_id | company_id 
---------+-------------- 
1002  | 113 
1002  | 111 
1002  | 110 
1003  | 114 
1003  | 111 
1003  | 110 
1004  | 111 
1004  | 110 


select user_id, 
     company_id 
from ( 
     select  u.id as user_id, 
        c.id as company_id, 
        c.parent_company_id, 
        u.company_id as user_company_id 
     from  user_info u, 
        company c 
     order by 1, 2 desc 
     limit  10000000000000000000 
     ) base 
where company_id in (user_company_id, @p) 
and if(@p := parent_company_id, 1, 1) 

如何轉換上述查詢我的期望輸出作爲MySQL視圖?

回答

0

在視圖創建語句中使用join

CREATE 
OR REPLACE VIEW user_company_view AS SELECT 
    u.User_Id AS user_id, 
    c.id AS company_id 
FROM 
    User_Info u 
INNER JOIN Company c ON u.Company_Id = c.id 
WHERE 
    c.Parent_Company_Id = '???' 
ORDER BY 
    u.User_Id DESC; 
+0

這不是一個遞歸查詢解決方案。我的查詢中提供的解決方案起作用。唯一的問題是我需要創建一個MySQL視圖,但是這個選擇查詢具有在視圖創建期間不允許的參數。我如何將查詢更改爲MySQl視圖? – mns