2017-02-13 9 views
0

私の目標は、各テーブルが複雑で、独自の共通テーブル式を定義するために、with table as alias構文を使用してSQLで2つのテーブルを結合することです。SQL:2つのテーブルの複数のCTEの連合

だから我々は、次の構文を使用して最初のテーブルを持っている:

with table1 as (
select/from/where statement), 

table2 as (
select/from where statement), 

select table1 join table2 on [...] 

そして第二に、テーブル、類似の構文で:

with table3 as (
select/from/where statement), 

table4 as (
select/from where statement), 

select table3 join table4 on [...] 

私の問題は、次のとおりです。単にこれら二つの間unionを置きますテーブルはそれを切断しません。コンパイラは、上の2つの表の間にunionが誤った式として認識します。

(私の別のアプローチ、あなたは一見お互いへの声明、「などと」いくつかを積み重ねることができないので、彼らはその後、失敗した労働組合への表6と表5のように全体最初のテーブルと全体の第二のテーブルを定義します。)

+0

? Postgres?オラクル? –

+0

Tab Allemanのソリューションがこの問題を解決しました。 –

+0

あなたはその答えを受け入れて、この問題を解決済みとマークする必要があります –

答えて

2

最初のSELECTの前にすべてのあなたのCTEを配置する必要がありますが、その後することができますUNIONそれら彼らはテーブルであるかのように:あなたが使用しているDBMS

WITH Table1 AS (..) 
, Table2 AS (..) 
, Table3 AS (..) 
, Table4 AS (..) 
SELECT Table1 JOIN Table2.. 
UNION 
SELECT Table3 JOIN Table4.. 
関連する問題