2017-09-14 68 views
0

我希望得到一些专家的意见全外连接/ COALESCE

我有2分表表1和表2

表1

ID DATE   SALEPRICE 

1 05/12/17  $10 
6 04/12/17  $11 
3 03/12/17  $12 
4 02/12/17  $13 

表2

ID DATE   REGULARPRICE 

1 07/12/17  $20 
2 08/12/17  $21 
3 09/12/17  $22 
4 10/12/17  $23 

结果表

ID SALEDATE   SALEPRICE REGULARPRICE REGULARPRICEDATE 

1 05/12/17   $10  $20   07/12/17 
6 04/12/17   $11   
3 03/12/17   $12  $22   09/12/17 
4 02/12/17   $13  $23   10/12/17 
2        $21   08/12/17 

我需要从两个表项..如果我有一个匹配的id的两个表的话,我想记录在单行..

我想用联盟,但结果是不正确的 - 下面是我的工会结果

1 05/12/17   $10  null   null 
1 null    null  $20   07/12/17 
6 04/12/17   $11  null   null 
3 null    null  $22   09/12/17 
3 03/12/17   $12  null   null 
4 02/12/17   $13  null    null 
4 null    null  $23   10/12/17 

我是否必须使用全外连接并凝聚,以获得理想的结果提前

感谢

+0

Yeap,全外连接将是你的解决方案。 –

+0

取决于RDBMS。 mySQL不支持完整的外部,但是两个外部和一个联合都可以。不知道为什么需要coalesce。或者您可以继续使用您所拥有的内容,并简单地通过ID将每个列和组的最大值(不那么优雅的imo) – xQbert

+0

哪些SQL?如果有人给你错误的SQL解决方案,这是没用的。 – Eric

回答

0

你可以POTEN同时使用两者。完全外连接可以返回所有记录,无论匹配如何,然后COALESCE将相同的列合并为一个。如果两列中的数据完全相同,则仅使用COALESCE很有用。这就是如果你想合并列。如果不是,那么只需使用完全外连接。