2010-11-19 18 views
0

我需要這樣進行查詢:使用的自聯接與嵌套PL/SQL查詢

假設如表的列 - <key>,<name>,<value>,我需要找到一個名稱=「NAME」值在以下條件下。

  1. 該鍵應該位於keys_i中,其中name_i ='NAME_i'且值='VALUE_i'。
  2. 該鍵應該位於keys_j中,其中name_j ='NAME_j'和value ='VALUE_j'。
  3. 密鑰應該位於keys_k中,其中name_k ='NAME_k'且值='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數據庫。也有助於瞭解MySQL。