Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Проблема со структурой БД?


Автор: Zahard 26.5.2013, 05:57
Здравствуйте, есть БД с такой схемой:
user posted image
Это БД общежития. 
decree - приказы
relocation - приказы, касающиеся перемещения студентов между комнатами (заселение/выселение и т.д.)
decree_type - тип приказа (Заселение/выселение/переселение и т.д.)
Между decree и relocation связь 1:1, между room и relocation, например, 1:М. 
Сейчас таблица decree выглядит так:
user posted image
Для 5-го студента только 2 приказа типа relocation (1 заселение и 1 переселение)
Когда делаю запрос на список студентов, которых заселили, то вижу такое:
user posted image
У 5-го студента в выборку попадают обе записи, хотя вторая касается перевода, а не заселения. 
Если сделать запрос на переселения, то картина аналогичная:
user posted image
В чем дело может кто объяснить?

Автор: password 27.5.2013, 11:33
Добрый день.
Вы не правильно связываете relocation. Вы связываете по студенту, а нужно по приказу. У вас в relocation 2 записи, вот по студенту и выбирается 2 записи.
Добавьте еще id приказа

...
Join relocation r on r.decree_id=d.decree_id and r.student_id=p.student_id
...

вроде так.

Автор: Zahard 27.5.2013, 15:15
password, Вы оказались правы) Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)