0

私は先週、かなり大きなデータベースに取り組んできました。基本的に、私は Access データベースを取り、それを MySQL データベースに変換しています。すべてのテーブルとビューを正常に MySQL に変換しました。ただし、ユーザーからの入力、日付が必要なビューがあります。もう 1 つのビューは、呼び出されるビューです。

ビュー 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

データベースを 1 人のユーザーだけが使用する場合、問題は解決されます。ただし、データベースが複数のユーザーによって使用されることを意図している場合...まあ、一時テーブルを使用できます。

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 に答える