0

上周我一直在研究一个相当大的数据库。基本上我正在使用 Access 数据库并将其转换为 MySQL 数据库。我已经成功地将所有表和视图转换为 MySQL。但是,我有一个需要用户输入的视图,即日期。另一个视图是将被调用的视图。

视图 1 - compiled_fourweeks- 需要日期视图 2 - metrics_fourweeks- 在查询中使用 `compiled_fourweeks。

我正在考虑一个程序,但我将无法引用查询中的列。

在这一点上,我有点没有想法了。

4

1 回答 1

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

希望这对您有所帮助。

于 2013-02-01T00:07:48.237 回答