我的数据库中有两个表。一个叫做 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=?";
答案 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 = ?