我的数据库中有两个表,其中一个称为
Table_join,它具有字段

ID , NameOfObject,Address,Date


第二个表称为Connection,它具有以下字段:

ID,IDofGroup,IDofSubgroup.


当我插入新记录时,它可以是一个没有子组的对象,例如像Object1本身的对象,也可以是Object2,而Object21是Object2的子组-在这种情况下,在第二个表Connection中,将Object2的ID插入IDofGroup,并将Object21的ID插入IDofSubgroup。

我想搜索表,例如,当我输入Object2时,在表中我想查看Object2及其地址和日期,以及Object21及其日期地址。当我使用内部联接时,我仅在搜索Object2时获得Object21 ,而不是Object2本身。

另外,当我使用内部联接时,我仅从object21获取ID,我也需要获取名称。

我的选择查询是

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

最佳答案

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

关于java - java sql选择并插入对组和子组的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37265815/

10-10 09:16