2012-10-07 32 views
0

我有2個表:恢復所有從多個表

Appointments 
id serviceId 
1 1 
2 1 

Services 
id 
1 

的任命表是通過使用服務ID列連接到服務表。從約會表中檢索數據時,我想從服務表中檢索數據,但每個表中的列數不匹配。

我已經試過這樣:

SELECT appointments.*, services.* FROM appointments 
INNER JOIN services ON id = appointments.serviceId 
WHERE id = ? 

但是,這是行不通的。首先,在連接中,我怎樣才能從約會表中引用一個我甚至沒有檢索過數據的ID?其次,如何從兩個表中獲取所有數據,然後在兩個列名匹配時檢索數據?

這是行不通的:

results.getInt("id"); 

因爲這兩個表中有一個ID字段。

回答

1

指定在ID所屬的表名,

SELECT appointments.*, services.* 
FROM appointments 
    INNER JOIN services 
     ON Services.id = appointments.serviceId 
-- WHERE id = ? -- specify also here as the two tables have column ID 

或添加ALIAS他們周圍

SELECT appointments.id as AppID, 
     appointments.serviceId as AppServiceID 
     services.id AS ServiceID 
FROM appointments 
     INNER JOIN services 
      ON Services.id = appointments.serviceId 
-- WHERE id = ? 

,當你得到他們的價值觀,現在使用的別名,這樣的事情,

results.getInt("AppID"); 
+0

好的,但我該如何檢索代碼中的信息。 Java特別在我的情況。通常遍歷結果集時,我會爲每列獲取像resultSet.getInt(「id」)等數據。但是,如果兩者的列名相同......我不明白如何得到它。我能以某種方式引用Java代碼中的表名嗎? – ryandlf

+0

@ryandlf我剛剛更新了答案。添加'ALIAS'對他們 –

+0

所以一個別名是我唯一的選擇,我必須列出每個列的名稱?是內部加入這裏唯一的選擇(或最好)在旁註。謝謝你的全力幫助John。在過去的幾天裏,你很快就回答了我的至少3個問題。 – ryandlf