我的数据库中有两个表,其中一个称为
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/