2012-09-03 123 views
0

我有以下兩個表,並希望構建一個選擇查詢,將匹配表之間的字段:從這個需要幫助構建查詢

tablename  columnname   size order 
    employee  name    25 1 
    employee  sex    25 2 
    employee  contactNumber  50 3 
    employee  salary    25 4 
    address   street    25 5 
    address   country   25 6 

我想構造查詢像

select 
     T1.name, 
     T1.sex, 
     T1.contactNumber, 
     T1.salary, 
     T2.street, 
     T2.contry 
from tablename1[employee] T1, 
    tablename2[address] T2 

如何構建上述查詢,這裏表名可以是N也可以是columname也可以是N

+0

'salary'應該在'employee'下面而不是'address'。遵循[教程爲jdbc](http://docs.oracle.com/javase/tutorial/jdbc/index.html) –

+0

顯示一些Java代碼你至少已經成功地連接到你的數據庫? –

+0

@Learner你在JAVA中使用什麼來存儲上述值,如表名,列名等 – jaychapani

回答

2

你應該有一個foreighn鍵列表2,以便您可以將其加入到表1中。您正在使用的查詢將獲取cartisian產品。

select 
    T1.name, 
    T1.sex, 
    T1.contactNumber, 
    T1.salary, 
    T2.street, 
    T2.contry 
from tablename1[employee] T1 
left join tablename2[address] T2 on T2.employee_id = T1.id 
+0

通過執行左連接,你可以從'T1中選擇所有記錄'只有來自'T2'的匹配記錄,如果表之間存在一對一匹配,並且缺少一些信息(在'T2'中),並且您希望僅選擇具有完整數據的員工,那麼你需要使用「內部連接」,就像我在下面的答案中所寫的一樣。 – alfasin

0

@Learner:在目前的情況下,沒有辦法在表格之間進行交叉引用(Google:foreign-key)。

你想要做的是一個新列添加到兩個表將被稱爲employee_id,那麼你就可以通過得到的數據:

select T1.*, T2.* 
from employee T1, address T2 
where T1.employee_id = T2.employee_id 
+0

表名和列名存儲在幾個表中,我能夠得到他想要的表和列名稱,但從我必須構造查詢來獲取值,我給出的查詢只是示例如何查詢應該是 –

+1

@學習者,如你所見,3個不同的人無法理解你的問題。請提供* real *數據的真實例子。您的問題太模糊,無法以當前格式回答。 – alfasin

+0

感謝您的努力,如果你看到我的問題有表,其中包含表名,列名,大小,順序我有一個查詢重新調整了這一點,從返回的結果我必須構造一個查詢,在使用java看起來像上面的答案這將帶來價值。 –