2017-03-06 49 views
0

我有表A存儲代碼和B表來存儲項目的詳細信息如何使用連接表來檢索數據?

TableA     TableB 
--------------------  ------------------------------------- 
code_id code_name   item_id item_name code_1 code_2 
--------------------  ------------------------------------- 
    1  AAA    1  apple  1  2 
    2  BBB    2  orange  1  1  
--------------------  ------------------------------------- 

Dim query as String = "SELECT item_name, TableA.code_name 
         FROM TableB 
         LEFT JOIN TableA 
         ON TableB.code_1 = TableA.code_id 
         WHERE item_name = apple" 

Result 
----------------------- 
item_name code_name 
----------------------- 
apple  AAA 
----------------------- 

上面的查詢只會返回一個代號,怎樣,如果我想要檢索code_1和CODE_2?

Result that I want 
---------------------------- 
item_name code_1 code_2 
---------------------------- 
    apple  AAA  BBB 
---------------------------- 
+0

如果添加什麼第三代碼是什麼?列 – Strawberry

+0

@vbnewbie您只加入了code_1字段,您還需要加入code_2。 – Whencesoever

+0

@JanWalczak如何加入code_2?選擇item_name,TableA.code_name AS'code_1',TableA.code_name AS'code_2'? – vbnewbie

回答

1

你應該在你的SELECT指定要以檢索

SELECT item_name, A.code_name, B.code_name FROM TableB WHERE item_name = 'apple' 
LEFT JOIN TableA A ON TableB.code_1 = TableA.code_id 
LEFT JOIN TableA B ON TableB.code_2 = TableA.code_id 
+0

結果變成蘋果,AAA,1,2,我怎樣才能得到蘋果,AAA,BBB而不是code_id? – vbnewbie

+0

我更新了我的回答 – berthos

+0

,但表格的結構並不完全正確。你應該只在表B中有'代碼',並且使用pivot來檢索列而不是行。當需要新的code_name時,你會做什麼?添加一個新的列code_3? – berthos

2
SELECT S1.item_name, U.code_name 
    FROM tableA U 
    JOIN tableB S1 ON (S1.code_1 = U.code_id) 
    JOIN tableB S2 ON (S2.code_2 = U.code_id) 
WHERE item_name = apple"