创建Mysql查看参数
问题描述:
我有一个下面的“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视图?
答
在视图创建语句中使用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;
这不是一个递归查询解决方案。我的查询中提供的解决方案起作用。唯一的问题是我需要创建一个MySQL视图,但是这个选择查询具有在视图创建期间不允许的参数。我如何将查询更改为MySQl视图? – mns