上周我一直在研究一个非常大的数据库。基本上我正在使用Access数据库并将其转换为MySQL数据库。我已成功将所有表和视图转换为MySQL。但是我有一个视图需要用户输入日期。另一个视图是将被调用的视图。
查看1 - compiled_fourweeks
- 需要日期
view 2 - metrics_fourweeks
- 在查询中使用`compiled_fourweeks。
我在想一个precedure但我无法在查询中引用这些列。
此时我有点想法。
答案 0 :(得分:1)
如果我理解正确,您需要执行需要来自其他视图(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
希望这会对你有所帮助。