2016-09-07 5 views
0

私は多くのデータを含むデータベースを持っていますが、セットアップに関与していませんでしたが、これは私が処理しなければならないものです。設計されたデータベースのクエリを定義する

このデータベース内には、ルックアップテーブルがあります。ただし、この表には他の表へのリンクはありません。本質的に次の形式をとる。

ID | input  | table_name | 
------------------------------------- 
1 | Movie  | movie_tbl | 
2 | Cartoon  | cartoon_tbl | 
3 | Animation | cartoon_tbl | 
4 | Audio  | audio_tbl | 
5 | Picture  | picture_tbl | 

表は上記よりもはるかに大きいが、構造は上記のとおりである。だから、誰かが私のサイトを訪れることが起こります。ここには、入力フィールドがあります。ムービーを入力した後、上記のテーブルが呼び出され、ムービーで入力を見つけることができます。それは、私は、クエリが今ではmovie_tblを返すべき

SELECT table_name FROM lookup_table WHERE input LIKE Movie; 

ようなものになるだろうと想像するだろう。それはで見て必要なものを表になります。私は今、movie_tbl内のMovieを検索し、その行のすべてのデータを返す必要があることを知っています。だから、movie_tblは今のテーブルが数万を持って、この(データはデータと異なるカラム名のいくつかのタイプになります)

ID | input  | col_1 | col_2 | col_3 | 
---------------------------------------------------- 
1 | Movie  | data | data | data | 
2 | Cartoon  | data | data | data | 
3 | Animation | data | data | data | 
4 | Audio  | data | data | data | 
5 | Picture  | data | data | data | 

だから今、私のクエリは、この

SELECT * FROM movie_tbl WHERE input LIKE Movie; 

のようなものになりますようになるかもしれませんデータの行の私の本当の疑問は、上記が効果的かどうかです。しかし私が与えられたデータベースでは、私はこれを行うことができる他の方法は見当たりません(私はデータベースに触れることができません)。これをより効果的にするために私ができることはありますか?

何かアドバイスは、なぜあなたは第二の表の入力をチェックしている

+0

入力を2回確認している理由がわかりません。 –

答えて

1

感謝感謝!あなたはすでに最初のテーブルからの入力をフィルタリングしている:あなたはいけない。この場合

SELECT table_name FROM lookup_table WHERE input LIKE Movie;

が2つのクエリを作成する必要があります。ちょうど第2のもので十分です。

SELECT * FROM movie_tbl; 

第二提案::=ではなくLIKEの使用後、あなたは「WHERE」節だけにアクセスすることが文句を言わないのでそれとも第二テーブルと漫画、アニメーションなどのために別々のテーブルに動画データを持ちます。正確な入力文字列を知っている場合、パターンマッチングの必要はありません。

+0

テーブル名を取得したら、そのテーブルから正しい行を取得する必要があるので、2番目のクエリを実行していました。 –

+0

すべての行がそのテーブルの正しい行であれば意味があります。基本的にすべてのCartoon Inputsをcartoon_tblに、すべてのMovie入力行をmovie_tblに入れます。 しかし、データモデルをそのまま維持して変更しないことをお勧めします。しかし、私はそれを言うため、あなたはどこでも条件なしでテーブルクエリから単純なselect allを行うことができるからです。 –

+0

データモデルを変更したくない場合は、「ビューの作成」を参照することもできます。 –

関連する問題