2016-10-20 13 views
0

我只是無法弄清楚如何使用創建,並在下面的示例中使用的變量一樣的漂亮技術:DB2,與條款,變量和多重加入

WITH t(myvar) AS (VALUES('welcome')) 
SELECT tablename.* 
FROM tablename, t 
WHERE tablename.column1 = t.myvar 
在多參加這樣的查詢

WITH t(myvar) AS (VALUES('welcomeagain')) 
SELECT 
    tablename.*, 
    joinedtable.valueid 
FROM 
    tablename, t? 
    left join joinedtable on 
    joinedtable.keyid = tablename.keyid 
WHERE 
    tablename.column1 = t.myvar 

我的意思是,在哪裏,如何以及我有什麼要加入「t」?該環境是DB2 ISeries 7.2。

非常感謝您的幫助

馬丁

回答

0

也許這是你想要的嗎?

WITH t(myvar) AS (VALUES('welcomeagain')) 
SELECT 
    tablename.*, 
    t.myvar, 
    joinedtable.valueid 
FROM 
    tablename 
    join t on tablename.column1 = t.myvar 
    left join joinedtable on joinedtable.keyid = tablename.keyid 

或本

WITH t(myvar) AS (VALUES('welcomeagain')) 
SELECT 
    tablename.*, 
    t.myvar, 
    joinedtable.valueid 
FROM 
    tablename 
    left join t on tablename.column1 = t.myvar 
    left join joinedtable on joinedtable.keyid = tablename.keyid 

或本

WITH t(myvar) AS (VALUES('welcomeagain')) 
SELECT 
    tablename.*, 
    t.myvar, 
    joinedtable.valueid 
FROM 
    tablename 
    cross join t 
    left join joinedtable on joinedtable.keyid = tablename.keyid 

什麼你不想要的是逗號 - 因爲這是一個古老的風格加入,用於組合與語法新款式的加入總是會有一點點鈍(如果它起作用的話)。

+0

工作!我選擇了第一個選項。謝謝! – brosoft

+0

@brosoft - 我建議嘗試其他選項,以便知道哪個是最正確的。 – Hogan