2014-01-23 96 views
0

我有两张桌子X和Yi桌子X有两个彩色,分别是A和B以及桌子Y的彩色C. 现在我想加入X和Y使用左加入开启条件 Xa = yc或Xb = yc我想获取表Y中'c'coloumn的行,分别对应于表X中'a'coloumn的行和表Y中'c'cOLOUMN的行,以及表X中B'coloumn的各行。左两张桌子加入

结果应该是这样的:

----------------------- 
X.a Y.C   X.B  Y.C 
1  1   5   5 
2  2   10  10 
3  3   20  20 
NULL  NULL  NULL  NULL 
+0

告诉我你有什么这么远吗? – zee

+0

从mt_cmn_order选择o.FKYS_COMBO_ID,o.FKYS_MOP1,o.FKYS_MOP2,i.KYS_ID,i.BOL_HARD_COPY_CLAIM,pa.FKYS_COMBO_IDö 左加入cmn_insurance我上(o.FKYS_MOP1 = i.KYS_ID或o.FKYS_MOP2 = i.KYS_ID ) – user3159660

+0

你的问题是什么?显示你的数据。显示您的查询。显示你的不法性结果。创建一个sqlfiddle。 – HerrSerker

回答

0

你可以简单地这样做

SELECT x.a, y1.c ac, x.b, y2.c bc 
    FROM x 
    LEFT JOIN y y1 ON x.a = y1.c 
    LEFT JOIN y y2 ON x.b = y2.c 

输出示例:

 
|  A |  AC |  B |  BC | 
|--------|--------|--------|--------| 
|  1 |  1 |  5 |  5 | 
|  2 |  2 |  10 |  10 | 
|  3 |  3 |  20 |  20 | 
| (null) | (null) | (null) | (null) | 

这里是演示

+0

它完美的作品,因为我需要.thanq – user3159660

0
SELECT X.a, X.b, Y.c 
FROM X LEFT JOIN Y 
ON X.a = Y.c OR X.b = Y.c 

哪里是你的问题?

问题不知道sql语法吗?否则,你很可能不会制定您的问题声明正确


基于您的评论,我与你想知道哪些比赛是被检索和修改后的查询值的假设会是:

SELECT X.a, X.b, Y.c, 
CASE WHEN (X.a = Y.c AND X.b != Y.c) THEN 'a' 
WHEN (X.a != Y.c AND X.b = Y.c) THEN 'b' 
WHEN (X.a = Y.c AND X.b = Y.c) THEN 'ab' END AS 'FromColumn' 
FROM X LEFT JOIN Y 
ON X.a = Y.c OR X.b = Y.c 
+0

我想在结果中分别为相应的X.a和X.b值设置两个y.c列 – user3159660

+0

对我来说这没有意义,值将始终相同。另外,如果最终处理表中的内容可以说.net,那么当您使用列名称引用单元格值时,具有相同名称的两列将会产生问题。你有什么机会想知道这个值是为a还是b检索的? –

+0

是的,我完全需要那 – user3159660