我有場景,我有表(在專有數據存儲)與數千列。導出用於查詢的表格被轉換爲窄格式(http://en.wikipedia.org/wiki/Wide_and_Narrow_Data)。加入兩個窄格式表
我正在開發一個查詢執行器。這個查詢執行器的輸入是窄表而不是原始表。我想在兩個類似的窄表上執行連接,但無法弄清楚它背後的確切一般邏輯。
例如,假設我們已經在原始格式(寬格式)2表R和S
Table R
C1 C2 C3 R1 R2 R3
5 6 7 1234 4552 12532
5 6 8 4512 21523 434
15 16 17 1254 1212 3576
Table S
C1 C2 C3 S1 S2 S3
5 6 7 5412 35112 3512
5 6 8 125393 1523 6749
15 16 17 74397 4311 1153
C1,C2,C3是表之間的公共列。
爲表R本窄表
C1 C2 C3 Key Value
5 6 7 R1 1234
R2 4552
R3 12532
5 6 8 R1 4512
R2 21523
R3 434
15 16 17 R1 1254
R2 1212
R3 3576
爲表S上的窄表是
C1 C2 C3 Key Value
5 6 7 S1 5412
S2 35112
S3 3512
5 6 8 S1 125393
S2 1523
S3 6749
15 16 17 S1 74397
S2 4311
S3 1153
現在,當我加入原始表R和S(上C1,C2和C3)我得到的結果
C1 C2 C3 R1 R2 R3 S1 S2 S3
5 6 7 1234 4552 12532 5412 35112 3512
5 6 8 4512 21523 434 125393 1523 6749
15 16 17 1254 1212 3576 74397 4311 1153
這些狹窄的格式是
C1 C2 C3 Key Value
5 6 7 R1 1234
R2 4552
R3 12532
S1 5412
S2 35112
S3 3512
5 6 8 R1 4512
R2 21523
R3 434
S1 125393
S2 1523
S3 6749
15 16 17 R1 1254
R2 1212
R3 3576
S1 74397
S2 4311
S3 1153
我怎樣才能通過加入狹窄的表(在共同的列),我作爲輸入得到上述表。 如果您使用兩個窄表之間的普通表格連接(自然連接,外連接等),您將得到一個分解表,因爲表R上的每個鍵都與表S中的所有鍵相乘。
我沒有使用SQL或Postgres或任何數據庫系統。我正在尋找算法或關係代數表達式的答案。
真的很感謝你用來證明它的努力。我已經實施了使用聯盟,因爲這是唯一的結果是有道理的。但是我無法證明它在數學上是正確的。 – sushil