2016-11-14 5 views
-3

Я получил Student с несколькими параметрами, как Id, имя и т.д. Теперь я получил еще один стол под названием ACCOUNTS, они имеют идентификатор и имя ...SQL выбрать несколько строк и заказать их по идентификатору

связь между этими двумя 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 

Итак ... долго рассказ короткий ... запрос выше, показывает учетные записи конкретного студента ... теперь мне просто нужно заказать их по идентификатору счетов

Любые предложения?

+0

'с левым Стьюдентом сек присоединиться к счетам на 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, student_id, ...)

Я должен сказать, что студент имеет поле под названием счета

Это не имеет никакого смысла. При этом вы будете хранить одну учетную запись на одного учащегося, и несколько учеников могут разделить одну учетную запись. Поэтому я придерживаюсь первого утверждения о том, что один студент может иметь несколько учетных записей, а таблицы выглядят более или менее, как показано выше.

Вы хотите видеть счета для одного студента. Таким образом, вы выбираете из счетов, где студент Совпадения 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; 
Смежные вопросы