带参数的MySQL视图

时间:2013-01-31 23:43:35

标签: mysql

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

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

我在想一个precedure但我无法在查询中引用这些列。

此时我有点想法。

1 个答案:

答案 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

希望这会对你有所帮助。