java sql选择并插入组和子组的查询

时间:2016-05-17 01:45:13

标签: java sql sql-server

我的数据库中有两个表。一个叫做 Table_join,它有字段

ID , NameOfObject,Address,Date

第二个表叫做Connection,它有字段:

ID,IDofGroup,IDofSubgroup.

当我插入新记录时,它可以是没有子组的对象,类似于Object1 on,或者它可以是Object2,而Object21是Object2的子组 - 在这种情况下在第二个表中连接我会将Object2的id插入IDofGroup,将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 个答案:

答案 0 :(得分:1)

Object2和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 = ?