2010-12-14 43 views
0

我有類似結構的查詢,以低於使用視圖從多個一個查詢選擇

SELECT blah 
FROM A, B, C 
WHERE $SOME_COMMON_IF_AND 
AND $SPECIFIC_1 

UNION 

SELECT blah 
FROM A, B, C, D 
WHERE $SOME_COMMON_IF_AND 
AND $SPECIFIC_2 

UNION 

... 

在上午試圖減少查詢時間,我試圖剝離出$ SOME_COMMON_IF_AND部分和項目它作爲視圖,並讓SELECT子句將此視圖用作基線。

我似乎無法找出正確的語法來做到這一點,有什麼建議嗎?

在此先感謝!

---編輯的更多信息---

例如:

(SELECT blah 
FROM A, B, C 
WHERE $SOME_COMMON_IF_AND) 
AS WORK_TABLE_1 

%[email protected]#%[email protected]# -- the missing link 

SELECT blah 
FROM WORK_TABLE_1 
WHERE $SPECIFIC_1 

UNION 

SELECT blah 
FROM WORK_TABLE_1 
WHERE $SPECIFIC_2 

UNION 

.... 

這是DB2,但我看一個普通的SQL解決方案,原來的查詢是一個獸( 1000行+),因此我抽象WHERE子句。請讓我知道是否需要更多的澄清。

+1

什麼數據庫?抽象的細節並沒有給我們任何真正的工作。 – 2010-12-14 04:05:17

+0

我不明白這個問題... – WOPR 2010-12-14 04:06:28

+0

它仍然令人困惑,你的總體目標是在這裏。您希望創建視圖,以便您不必從我收集的內容中反覆輸入冗長的查詢。除此之外,我沒有得到你所要求的。 – 2010-12-14 04:16:51

回答

2

你在找什麼叫做公用表表達式。這就像有一個在線視圖:

with 
work_table_1 as (
    SELECT blah 
    FROM A, B, C 
    WHERE $SOME_COMMON_IF_AND 
) 
SELECT blah 
FROM WORK_TABLE_1 
WHERE $SPECIFIC_1 

UNION 

SELECT blah 
FROM WORK_TABLE_1 
WHERE $SPECIFIC_2