2016-05-17 61 views
0

我在database.One兩個表被稱爲 Table_join,它有場的Java SQL選擇和組插入查詢和編組

ID , NameOfObject,Address,Date 

第二個表被稱爲連接,它有字段:

ID,IDofGroup,IDofSubgroup. 

當我插入新的記錄,它可以是沒有分組的對象,像Object1上自己的,也可以是一個對象2,和Object21是對象2的子羣 - 在這種情況下,在第二個表連接我會將Object2的id插入到IDo中fGroup和Object21的ID轉換爲IDofSubgroup。

我想搜索我的表,所以例如當我在表中輸入Object2時,我想看到Object2及其地址和日期,Object21及其日期地址。當我使用內部連接時,我只得到Object21當我搜索Object2時,不是Object2本身。

另外,當我使用內部連接時,我只從object21獲取id,我還需要獲取名稱。

我的選擇查詢是

String query = "SELECT * from table_join INNER JOIN connection ON table_join.id = connection.id_IDofSubgroup WHERE NameOfObject=?"; 

回答

1

兩個對象2和Object21存儲在Table_join表。這意味着您需要同時查看該表中的兩個不同記錄。這意味着您需要FROM/JOIN子句中的表格兩次

由於您在同一時間從同一表中返回兩行,您的列名稱將發生衝突,因此您必須在查詢中重命名它們。

SELECT t1.ID   AS MainID 
    , t1.NameOfObject AS MainName 
    , t1.Address  AS MainAddress 
    , t1.Date   AS MainDate 
    , t2.ID   AS SubID 
    , t2.NameOfObject AS SubName 
    , t2.Address  AS SubAddress 
    , t2.Date   AS SubDate 
    FROM Table_join t1 
    JOIN Connection c ON c.IDofGroup = t1.ID 
    JOIN Table_join t2 ON t2.ID = c.IDofSubgroup 
WHERE t1.NameOfObject = ? 
+0

這仍然只給我Object21,而不是Object2也當我在搜索中輸入Object2。我想在我的結果Object2和Object21中看到。在時間上我將有Object22,Object23 .. – nscott23