我得到一个Student
,其中包含一些参数,例如Id,Name等。
现在我又得到一个名为ACCOUNTS
的表,他们有一个id和一个名字......
这两者之间的关系是OneToMany
(一个学生可以拥有更多账户)
我需要一个SQL查询来显示学生的所有帐户......这就是我所拥有的,但它不起作用......
"Select distinct s from Student s left join fetch s.accounts where s.id=:studId"
我应该说Student
有一个名为accounts
在查询结束时,我已经放置了ORDER BY
,然后以下代码无效:
s.accounts.id
account.id
student.account.id
所以...长话短说...上面的查询,显示特定学生的帐户...现在我只需要按帐户的ID订购
有什么建议吗?
答案 0 :(得分:1)
OP确认将其添加为答案。
select distinct s.id, s.name, a.id
from students s left outer join accounts a on s.id = a.id
order by s.id, a.id;
答案 1 :(得分:1)
一名学生可以拥有更多帐户
所以它有两张桌子:
我应该说学生有一个名为accounts
的字段
这没有任何意义。通过这种方式,您将为每个学生存储一个帐户,并且几个学生可以共享一个帐户。因此,我坚持第一个声明,即一个学生可以拥有多个帐户,而且这些表格或多或少看起来像我上面所示。
您希望查看一位学生的帐户。因此,您可以从学生ID匹配的帐户中进行选择:
select * from accounts where student_id = :studId order by account.id;
如果您想要显示学生数据,请改为加入表格:
select *
from student s
left join accounts a on a.student_id = s.id
where s.id = :studId
order by a.id;