2016-11-14 85 views
-3

選擇多行,責令我有一個Student有幾個參數,如ID,姓名等 現在我得到了另外一個表叫ACCOUNTS,他們有一個ID和一個名稱...SQL通過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

'從學生的左加入一個賬戶上,所以你從學生ID匹配賬戶選擇s.id = a.id'? – jarlh

+1

另外,你正在用同名's'來混淆兩件事。 – FDavidov

+0

它不起作用... – newbie

回答

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

一個學生可以有更多的賬戶

所以這兩個表:

  • 學生(ID,姓名,...)
  • 賬戶(id,student_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;