我用來跟蹤線影像資料的大型數據庫上運行。目前,數據庫(Oracle)圍繞三個主表構成:
1)地圖詳細信息表。定義特定地圖的所有頂級詳細信息,如縣/區/城市。每張地圖由下表中使用的序列號唯一標識。
2)走廊長度表。基本上,烏鴉飛行多久,以及走廊是在公共還是私人土地上。因此,此處定義的素材只是從A到B的距離。
3)線長表。該表存儲有關可以在給定走廊中運行的不同電線的信息。每個工作電壓都有一行。因此,例如,走廊可能有幾段長度的線; 12KV,33KV和66KV。
(1)中總是會有一個地圖記錄,但是在(2)和(3)中存在任意數量的行,並且(2)和(3)中的行數通常不匹配。
問題:
我正在尋找加入這三個表,使得每個鏡頭只報一次的方法。這可以通過示例最好地說明。下面是一個示例記錄集:
Map Details:
-------------------------------------------
| SERIAL_NO | CNTY | DIST | MAP_NO (Name) |
|-----------------------------------------|
| 1 | 33 | 88 | 123-4567-8 |
-------------------------------------------
Corridor Details:
------------------------------------
| SERIAL_NO | PROPRTY_CD | CORR_FT |
|----------------------------------|
| 1 | PUBLIC | 100 |
| 1 | PRIVATE | 200 |
------------------------------------
Wire Details
---------------------------------
| SERIAL_NO | OPER_KV | WIRE_FT |
|-------------------------------|
| 1 | 12 | 300 |
| 1 | 33 | 200 |
| 1 | 66 | 200 |
---------------------------------
,我之後的最終輸出將類似以下內容:
--------------------------------------------------------------------------------------
| SERIAL_NO | CNTY | DIST | MAP_NO (Name) | PROPRTY_CD | CORR_FT | OPER_KV | WIRE_FT |
|------------------------------------------------------------------------------------|
| 1 | 33 | 88 | 123-4567-8 | PUBLIC | 100 | 12 | 300 |
| 1 | 33 | 88 | 123-4567-8 | PRIVATE | 200 | 33 | 200 |
| 1 | 33 | 88 | 123-4567-8 | NULL | NULL | 66 | 200 |
--------------------------------------------------------------------------------------
注:電線走廊進尺將不匹配最的時間(有導線倍增器,爲了簡潔起見,這裏沒有顯示)。此外,走廊表中可能會有更多的行與走線臺(無走廊的走廊)相反,反之亦然(具有多條走廊的走廊)。
我已經嘗試了許多不同的方法來解決這個問題,但我似乎無法得到我想要的輸出。每一個加入我曾嘗試已導致價值被複制或類似的是哪些如下:
BAD:
--------------------------------------------------------------------------------------
| SERIAL_NO | CNTY | DIST | MAP_NO (Name) | PROPRTY_CD | CORR_FT | OPER_KV | WIRE_FT |
|------------------------------------------------------------------------------------|
| 1 | 33 | 88 | 123-4567-8 | PUBLIC | 100 | 12 | 300 |
| 1 | 33 | 88 | 123-4567-8 | PUBLIC | 100 | 33 | 200 |
| 1 | 33 | 88 | 123-4567-8 | PUBLIC | 100 | 66 | 200 |
| 1 | 33 | 88 | 123-4567-8 | PRIVATE | 200 | 12 | 300 |
| 1 | 33 | 88 | 123-4567-8 | PRIVATE | 200 | 33 | 200 |
| 1 | 33 | 88 | 123-4567-8 | PRIVATE | 200 | 66 | 200 |
--------------------------------------------------------------------------------------
摘要:
我對長的問題道歉,但它是有點複雜的解釋我是什麼後。長話短說,我想列出兩個子表中的所有行並排(沒有特定的順序),同時爲兩個表之間的行差的列填充NULL。先謝謝你。
您是否在尋找['FULL JOIN'](http://www.w3schools.com/sql/sql_join_full.asp)?這將爲您提供表格的結果,並排顯示不匹配記錄的空白/空值。 – swasheck
電線與哪條走廊相匹配是否重要? – Gabe
感覺像這個數據庫沒有正確規範化。這3張桌子的鑰匙是什麼? –