Ms-Access

將兩個數據庫表合併為一個

  • October 4, 2020

我有一個包含兩個表的數據庫。每個表都有不同的結構,但它們確實共享很少的公共欄位。

簡化範例:

表1欄位結構:

Field1, Field2, Field3, Field4

表2欄位結構:

Field1, Field4, Field3, Field5, Field6

當然,我的數據庫有更好的命名欄位,而且還有更多。如您所見,兩個表都有 Field1(主鍵)、Field3 和 Field4。

現在我想知道是否有可能以某種方式將這兩個表中的數據合併為一個,最好不要實際複製和複製數據(使用數據庫關係或查詢)。

第三個表應包含所有常見欄位和其他一些欄位(當沒有可用數據或一些預設數據時為空白單元格)。

我知道從長遠來看,最好修改數據庫結構,以便所有公共欄位都儲存在一個表中,而所有其他欄位都儲存在其他關係表中,但此時我不允許對現有表進行任何更改因為我的老闆擔心這會導致現有系統崩潰。

有計劃更新並最終將這些系統合併為一個(包括數據庫重組),但在此之前我確實需要做一些統計分析,所以我正在尋找快速實施的解決方案。

性能對此並不重要,因為這只是一個臨時解決方案,但仍然是需要的,因為我不想等待太長時間來檢索數據,也不想導致整個數據庫系統顯著減速.

所以歡迎任何建議。

我會使用視圖。只需準備以下形式的選擇:

SELECT Field1, Field2, Field3, Field4, null as Field5, null as Field6
 FROM Table1

UNION 

SELECT Field1, null, Field3, Field4, Field5, Field6
 FROM Table2;

您可以根據需要細化選擇以過濾或擴展。當您滿意時,只需將視圖定義為:

CREATE VIEW MergedTable AS 
SELECT Field1, Field2, Field3, Field4, null as Field5, null as Field6
 FROM Table1

UNION 

SELECT Field1, null, Field3, Field4, Field5, Field6
 FROM Table2;

然後,您始終可以針對視圖執行您的選擇,幾乎就像它是一個表格一樣。

SELECT * FROM MergedTable;

引用自:https://dba.stackexchange.com/questions/103486