我的两个表t1和t2之间有很多关系。我试图从t1获得属于t2的结果,我可以使用简单的连接,但我也希望获得与该t1行有关系的所有t2记录。
我会将我想要的结果翻译成json以便更好地理解:
[
{
"name": "t1.1",
"t2s": [
{
"name": "t2.1"
},
{
"name": "t2.2"
}
]
},
{
"name": "t1.2",
"t2s": [
{
"name": "t2.1"
},
{
"name": "t2.3"
}
]
}
]
更新: 这是我当前的查询,它返回关系的数据,但我也希望获得与t1有关系的所有t2记录。
select t1.name,t2.name
from t1
join t1_t2 as t1t2
on t1t2.id=t1.id
where t1t2.id = '10'
答案 0 :(得分:0)
我希望我理解目标就在这里。如果您要为某些Integer[] is = new Integer[100 + new Random().nextInt(500)];
Arrays.fill(is, 0);
List<Integer> list = Arrays.asList(is);
行提取t1.name
和t2.name
,则以下查询将执行此操作:
t1_t2
在这里,我只是加入SELECT t1.name, t2.name
FROM t1_t2
JOIN t1
on t1_t2.t1_id = t1.id
JOIN t2
on t1_t2.t2_id = t2.id
WHERE t1_t2.id = 10
,其中ids相等,而不是t1
。如果这就是你所需要的,那就非常简单了。
另一方面,如果您希望所有t2
与t2.name
相关联,则只需更改t1
:
WHERE
这将获得与t1行关联的所有行。
我可能会建议一个不同的,更简单的表结构:
WHERE t1.id = 10
请参阅,这里我将这两个表指向多对多表。然后你可以完全跳过t1_t2表并说:
t1:
id
t1_t2_id
name
t2:
id
t1_t2_id
name
t1_t2:
id