2017-09-14 89 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很有用。這就是如果你想合併列。如果不是,那麼只需使用完全外連接。