2015-08-23 44 views
0

我已經投入了必要的2+小時的挖掘工作,但沒有得到答案。INNER JOIN需要在結果中使用兩次列值

我想合併3個SQL表,其中表A和B共享一列,而表B和C共享一列 - 表A和C不共用。

例如:

表A - entity_list

entity_id | entity_name | Other, irrelevant columns 

實施例:

1 | Microsoft | 

2 | Google | 

表B - transaction_history

transaction_id | purchasing_entity | supplying_entity | other, irrelevant columns 

例子:

1 | 2 | 1 

表C - transaction_details

transactional_id | amount_of_purchase | Other, irrelevant columns 

1 | 5000000 | 

使用INNER JOIN,我已經能夠得到一個結果,我可以鏈接entity_name要麼purchasing_entitysupplying_entity。然後,在結果中,而不是看到entity_id,我得到了實體名稱。但我想用實體名稱替代採購和供應實體。

我理想的結果應該是這樣的:

1 [transaction ID] | Microsoft | Google | 5000000 

的關閉我來就是:

1 [transaction ID] | Microsoft | 2 [Supplying Entity] | 5000000 

到那裏,我做:

SELECT transaction_history.transaction_id, 
     entity_list.entity_name, 
     transaction_history.supplying_entity, 
     transaction_details.amount_of_purchase 
FROM transaction.history 
INNER JOIN entity_list 
ON transaction_history.purchasing_entity=entity_list.entity.id 
INNER JOIN 
ON transaction_history.transaction_id=transaction_details.transaction_id 

我無法獲得entity_name供給purchasing_entitysupplying_entity

回答

0

下面是該查詢:

SELECT h.transaction_id, h.purchasing_entity, purchaser.entity_name, h.supplying_entity, supplier.entity_name, d.amount_of_purchase 

FROM transaction_history h 

INNER JOIN transaction_details d 
ON h.transaction_id = d.transaction_id 

INNER JOIN entity_list purchaser 
ON h.purchasing_entity = purchaser.entity_id 

INNER JOIN entity_list supplier 
ON h.supplying_entity = supplier.entity_id 
+0

似乎沒有這樣的伎倆。我得到空的結果。 我也嘗試切換到左連接,但這留下了兩個「entity_name」列中的「null」。 – StackinUpKnowledge

+0

您確定transaction_history表的supply_entity字段中的值是否與entity_list表的entity_id的值匹配?我在查詢中添加了supplier_entity和purchasing_entity字段。請再次運行以確保它們不爲空。 –

+0

感謝阿卜杜拉,正如我從問題中的例子到我實際領域的名字一樣,我在邏輯上犯了一個錯誤。謝謝你迫使我仔細檢查。並感謝您的快速,有幫助,最重要的是,正確的迴應。 – StackinUpKnowledge