我有2个选择正在返回:
SELECT_A (COLUMN_A,COLUMN_B, SELECT_A_JOIN_COLUMN)
SELECT_B (COLUMN_A,COLUMN_B, SELECT_B_JOIN_COLUMN)
Run Code Online (Sandbox Code Playgroud)
期望的结果:
Result (COLUMN_A,COLUMN_B,SELECT_A_JOIN_COLUMN,SELECT_B_JOIN_COLUMN)
Run Code Online (Sandbox Code Playgroud)
例:
SELECT_A
结果:
A B zxc
A B rty
Run Code Online (Sandbox Code Playgroud)
SELECT_B
结果:
A B yui
A B hjk
Run Code Online (Sandbox Code Playgroud)
期望的结果:
A B zxc null
A B rty null
A B null yui
A B null hjk
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?
这几乎就像工会一样,但我可以通过加入来做到这一点吗?
编辑:
好.所以让我说明我的目标.我想让查询返回一个分层树.这是因为LINQ2Entities正在为查询生成额外的缓慢且低效的sql,其中包含很多导航属性.
所以我想要首先实现的是以不知何故获得树.
例:
我希望达到以下结果:
ObjectId | ChildType1Id | ChildType1Field | ChildType2Id | ChildType2Field
1 34 asd null null
1 12 xcv null null
1 5 klk null null
1 null null 6 vbn
1 null null 7 jkh
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有两个简单的选择,左连接返回我:
ObjectId | ChildType1Id | ChildType1Field
1 34 asd
1 12 zcv
1 5 klk
Run Code Online (Sandbox Code Playgroud)
和
ObjectId | ChildType2Id | ChildType2Field
1 6 vbn
1 7 jkh
Run Code Online (Sandbox Code Playgroud)
如果我有更多的孩子类型怎么办?对于每个childType,我似乎需要使用union.如果我有50列,我需要在UNION中声明所有这些列(因为它需要相同数量的列).我可以避免使用像join这样的所有联盟来添加我需要的列(下一个childrentype列)吗?
3种不同儿童的所需结果类型:
ObjectId|ChildType1Id|ChildType1Field|ChildType2Id|ChildType2Field|ChildType3Id|ChildType3Field
1 34 asd null null null null
1 12 xcv null null null null
1 5 klk null null null null
1 null null 6 vbn null null
1 null null 7 jkh null null
1 null null null null 5 iop
1 null null null null 9 klp
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
要做到这一点JOIN
比一个UNION
(SQL小提琴)更复杂
SELECT COALESCE(A.COLUMN_A, B.COLUMN_A) AS COLUMN_A,
COALESCE(A.COLUMN_B, B.COLUMN_B) AS COLUMN_B,
SELECT_A_JOIN_COLUMN,
SELECT_B_JOIN_COLUMN
FROM SELECT_A A
FULL OUTER JOIN SELECT_B B
ON SELECT_A_JOIN_COLUMN = SELECT_B_JOIN_COLUMN
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
115 次 |
最近记录: |