上周我一直在研究一个相当大的数据库。基本上我正在使用 Access 数据库并将其转换为 MySQL 数据库。我已经成功地将所有表和视图转换为 MySQL。但是,我有一个需要用户输入的视图,即日期。另一个视图是将被调用的视图。
视图 1 - compiled_fourweeks
- 需要日期视图 2 - metrics_fourweeks
- 在查询中使用 `compiled_fourweeks。
我正在考虑一个程序,但我将无法引用查询中的列。
在这一点上,我有点没有想法了。
上周我一直在研究一个相当大的数据库。基本上我正在使用 Access 数据库并将其转换为 MySQL 数据库。我已经成功地将所有表和视图转换为 MySQL。但是,我有一个需要用户输入的视图,即日期。另一个视图是将被调用的视图。
视图 1 - compiled_fourweeks
- 需要日期视图 2 - metrics_fourweeks
- 在查询中使用 `compiled_fourweeks。
我正在考虑一个程序,但我将无法引用查询中的列。
在这一点上,我有点没有想法了。
如果我理解正确,您需要执行一个metrics_fourweeks
需要来自另一个视图 () 的数据的视图 ( compiled_fourweeks
),而最后一个视图需要用户输入。
我会采用程序方法:
create procedure fourWeeksData(d date)
create or replace view compiled_fourweeks
select ...
from ...
where recordDate = f -- Just an example; use whichever where clause you need
...;
select * from metrics_fourweeks;
end
如果您的数据库将仅由单个用户使用,那么您的问题就解决了。但是,如果您的数据库打算供多个用户使用...好吧,您可以使用临时表:
create procedure fourWeeksData2(d date)
drop table if exists temp_compiled_fourweeks;
create temporary table temp_compiled_fourweeks
select ...
from ...
where recordDate = f -- Just an example; use whichever where clause you need
...;
-- You will need to create the required indexes for this new temp table
-- Now replicate the SQL statement, using your new temp table
select ...
from temp_compiled_fourweeks
...;
end
希望这对您有所帮助。