SQL选择多行并按标识

时间:2016-11-14 13:58:25

标签: sql select

我得到一个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订购

有什么建议吗?

2 个答案:

答案 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)

  
    

一名学生可以拥有更多帐户

  

所以它有两张桌子:

  • 学生(身份证,姓名,......)
  • 帐户(id,student_id,...)
  
    

我应该说学生有一个名为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;