2010-11-19 3 views
0

を照会します。使用すると、私はこのようなクエリを実行する必要が

は次のように表の列を想定 - <key>,<name>,<value>と私は名前=「NAME」の値を見つける必要があります以下の条件で行う。

  1. キーは、name_i = 'NAME_i'、値= 'VALUE_i'のkeys_iにする必要があります。
  2. キーはkeys_j(name_j = 'NAME_j'、value = 'VALUE_j')にある必要があります。
  3. キーはkeys_k(name_k = 'NAME_k'、value = 'VALUE_k')にする必要があります。

私は現在の形のネストされたクエリを使用しています:

Select a.value from <table_name> a 
    where a.name='NAME' 
    and a.key IN(
    Select b.key 
    from <table_name> b 
    where (b.name = 'NAME_i' and b.value = 'VALUE_i') 
    and b.key IN(
      Select c.key 
      from <table_name> c 
      where (c.name = 'NAME_j' 
      and c.value = 'VALUE_j') 
      and c.key IN(
       Select d.key 
       from <table_name> d 
       where (d.name = 'NAME_k' and d.value = 'VALUE_k')))); 

は、自己が参加使用して、より一般化された形式または任意の他の技術はありますか?私のテーブルは小さく、最適化は本当に必要ではありませんが、大規模なデータセットにとって理想的なソリューションは何でしょうか?

答えて

0

これは、データベースの実装と、クエリオプティマイザが各クエリタイプを書き換える方法に大きく依存すると思います。すべてのデータベースシステムについてこの質問にすぐに答えられるとは思わないでください。

0

私の場合は、PL/SQLクエリとOracle DB用です。また、MySQLを知るのに役立つでしょう。

関連する問題