Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> select выборочно 
:(
    Опции темы
KaKTyCc
Дата 12.6.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



Код

select l.name_disciplina, p.hours_all, j.ball, l.cod_disciplina  
from metodist.lessons l, metodist.plans p, metodist.work_plans wp,
metodist.journal_progress j where j.id_student = :IdS 
 and j.id_work_plan=wp.id_work_plan and p.id_plan=wp.id_plan 
and  l.id_disciplina=p.id_disciplina and wp.session_type=:sType


запрос возвращает все результаты экзаменов, которые изучал студент
вся проблема в том, что некоторые предметы изучались два раза, три раза, и по ним были экзамены
меня интересует последний результат (который идет в диплом), как выбрать именно эту запись 
подскажите
  

Это сообщение отредактировал(а) KaKTyCc - 12.6.2006, 14:38
--------------------
Мой блог
PM MAIL WWW   Вверх
DeadSoul
Дата 12.6.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Можешь струтуры таблиц нарисовать? В коде читать сложнее

Добавлено @ 14:50 
В общем основная идея:
Таблица Marks
- MarkId
- StudentFK
- SubjectFK
- Mark <- балл
- ExamDate 

Код

SELECT * FROM Marks A WHERE 
NOT EXISTS
(
  SELECT * FROM Marks B WHERE A.StudentFK=B.StudentFK AND A.SubjectFK=B.SubjectFK AND A.ExamDate>B.ExamDate
)


Данный запрос вернет все последние студенто-экзамены
  

Это сообщение отредактировал(а) DeadSoul - 12.6.2006, 15:40


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
KaKTyCc
Дата 12.6.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



DeadSoul, не понял ничиго smile

 
--------------------
Мой блог
PM MAIL WWW   Вверх
DeadSoul
Дата 12.6.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Я решил тебе аналогичную задачу.

Структуру таблицы ты понял? 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
KaKTyCc
Дата 12.6.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



я не понял этого A.ExamMark>B.ExamMark

ты сравниваешь полученные оценки? зачем?
смотри:
1 семестр - Математический анализ 4
2 семестр - Математический анализ  3

получить мне надо Математический анализ  3 в выписке

щас вот подумал, брать по семестру
хех, пошел пробовать  smile 
 
 
--------------------
Мой блог
PM MAIL WWW   Вверх
DeadSoul
Дата 12.6.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Цитата(KaKTyCc @  12.6.2006,  15:34 Найти цитируемый пост)
я не понял этого A.ExamMark>B.ExamMark

Опечатался. Естественно сравнивать там надо времяsmile. Уже исправил 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
KaKTyCc
Дата 12.6.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



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

как сравнить семестры  smile

Добавлено @ 15:47 
а почему NOT EXISTS  smile 
блин запутался, надо передохуть немного  
--------------------
Мой блог
PM MAIL WWW   Вверх
Sqlninja
Дата 12.6.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 15.5.2006
Где: San Francisco, CA

Репутация: 13
Всего: 13



надо чтобы каждый экзамен имел SEMESTR_ID. иначе никак. 


--------------------
It's better to burn out than to fade away.
PM MAIL WWW ICQ   Вверх
KaKTyCc
Дата 12.6.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



все понял насчет NOT EXISTS  smile

Добавлено @ 15:52 
Sqlninja, он имеет, только тут несколько таблиц, я запутался

из того запроса что в первом топе

semestr есть в таблице plans p 
--------------------
Мой блог
PM MAIL WWW   Вверх
skyboy
Дата 12.6.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



KaKTyCc, набросай список/структуры таблиц, а? 
PM MAIL   Вверх
Sqlninja
Дата 12.6.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 15.5.2006
Где: San Francisco, CA

Репутация: 13
Всего: 13



Код

AND semestr_id = (SELECT MAX(semestr_id) FROM plans,... WHERE discipline_id = discipline_id and ...)


структуру таблиц не дал и хочешь чтобы тебе запрос написали.  smile  


--------------------
It's better to burn out than to fade away.
PM MAIL WWW ICQ   Вверх
KaKTyCc
Дата 12.6.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



Цитата

структуру таблиц не дал и хочешь чтобы тебе запрос написали.  smile


 smile 

Код

CREATE TABLE JOURNAL_PROGRESS  --журнал успеваемости
(
  ID_JOURNAL_PROGRESS  NUMBER(6)                NOT NULL,
  ID_STUDENT           NUMBER(6)                NOT NULL,
  ID_WORK_PLAN         NUMBER(6)                NOT NULL,
  BEGIN_SESSION        DATE,
  END_SESSION          DATE,
  BALL                 NUMBER(1),
  RATING               NUMBER(3),
  DATE_SDACHA          DATE,
  ZACHET_BALL          VARCHAR2(1 CHAR),
  POPITKA              NUMBER(1),
  DATE_PERESDACHA      DATE,
  NOTES                VARCHAR2(50 CHAR)
)


CREATE TABLE LESSONS  --список всех предметов
(
  ID_DISCIPLINA    NUMBER(6)                    NOT NULL,
  COD_DISCIPLINA   VARCHAR2(10 CHAR),
  NAME_DISCIPLINA  VARCHAR2(130 CHAR),
  DEL              NUMBER(1)                    DEFAULT 0
)

CREATE TABLE PLANS --учебный план (предметы берутся из LESSONS)
(
  ID_PLAN          NUMBER(6)                    NOT NULL,
  SEMESTR          NUMBER(2)                    NOT NULL,
  ID_SPECIALITY    NUMBER(6)                    NOT NULL,
  EXAM             NUMBER(2),
  ZACHET           NUMBER(2),
  KURS_WORK        NUMBER(2),
  HOURS_ALL        NUMBER(3),
  HOURS_AUDIT      NUMBER(3),
  HOURS_LESSON     NUMBER(3),
  HOURS_LAB        NUMBER(3),
  HOURS_PRAC_SEM   NUMBER(3),
  LERN_PRAC        NUMBER(2),
  WORK_PRAC_IND    NUMBER(2),
  WORK_PRAC_GROUP  NUMBER(2),
  ID_CAFEDRA       NUMBER(6)                    NOT NULL,
  FORM             VARCHAR2(10 CHAR)            NOT NULL,
  DEL              NUMBER(1)                    DEFAULT 0,
  ID_DISCIPLINA    NUMBER(6)                    DEFAULT NULL                  NOT NULL
)

CREATE TABLE WORK_PLANS  --здесь закрепление преподавателей, групп за учебный план
(
  ID_WORK_PLAN  NUMBER(6)                       NOT NULL,
  ID_PLAN       NUMBER(6)                       NOT NULL,
  ID_GROUP      NUMBER(6)                       NOT NULL,
  ID_TEACHER    NUMBER(6),
  SESSION_TYPE  VARCHAR2(10 CHAR)
)

 
--------------------
Мой блог
PM MAIL WWW   Вверх
DeadSoul
Дата 12.6.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Цитата(KaKTyCc @  12.6.2006,  15:51 Найти цитируемый пост)
все понял насчет NOT EXISTS  

Осталось сделать INNER JOIN не с таблицей Marks(или твоим аналогом), а с результатом моего запросаsmile 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
skyboy
Дата 13.6.2006, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



структуру базыменять можешь? или уже нет? 
PM MAIL   Вверх
KaKTyCc
Дата 13.6.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



skyboy, в принципе могу, а что, есть косяки?  smile  
--------------------
Мой блог
PM MAIL WWW   Вверх
skyboy
Дата 13.6.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



ну, мне кажется, что твоя структура немного нерациональна, иначе ты бы и  сам смог бы написать сво запрос. 
Вот смотри:
Например, "Журнал успеваемости".
Зачем для каждого студента в отдельности хранить дату начала и окончания сессии? Они что - по человеку в день экзамены сдают?
Почему там столбики для зачёта и для экзамена? Разве можно по одному и тому же предмету получить и зачёт, и оценку?
Если пересдач будет больше 1 - будешь ещё одну строку добавлять?
И подобного там хватает. 
Давай с самого начала. Что у нас может быть общим, а что - уникально.
Как попаду домой, набросаю структуру, которую я придумал. Если будет необходимость. А пока - давай посмотрим, что у нас есть.
1.Что уникально для каждого студента? ФИО и группа, к которой он относится. Это и следует вынести в отдельную таблицу информации о студенте.
2.Естественно, группы следует вынести в отдельную таблицу-справочник, где будут содержаться только пары ИД_группы + шифр_группы.
3.Предмет, как таковой, в отрыве от учебного плана, имеет только название.
4.Преподаватель характеризуется фамилией, именем и отчеством.
5.Список типов работ будет хранить список названий типов работ, выполняемый в течение семестра(лабораторные, практические и прочие)
6.Список типов сдач будет хранить типы зачётных работ(курсовой, дипломный, экзамен, зачёт) и максимальный бал по этой сдаче(1 - для зачёта, 5 - для экзамена).
7.Дисциплина(назовём это так) - это конкретный предмет, который читается у конкретной группы. Она(дисциплина) имеет уникальный учебный план(набор разного рода лабораторных/практических и иных работ разного количества), уникальный(возможно) набор преподавательского состава, разные данные о родах сдачи(курсовая, зачёт, экзамен и прочее) и, возможно, ещё некоторые отличительные характеристики. Вобщем, надо таблица дисциплин с парой полей: код_группы + код_предмета.
8.Преподавать одну "дисциплину"(читать предмет одной группе) могут несколько(не обязательно - один) преподавателей(лекторов может быть несколько; я уже не говорю про руководителей дабораторных работ и пр.). Потому создадим таблицу преподающих: ид_дисциплины + ид_препода.
9. План по "дисциплине" будет содержать связку полей ид_дисциплины + ид_тип_работы(лабораторная/практическая и т.д.)  + количество_часов_в_семестре.
10. "Даты сдач дисциплин" будет содержать связку ид_дисциплины + дата_сдачи + ид_тип_сдачи(курсовой/экзмен/зачёт) - так мы организуем не только список дат экзаменов, но и список дат пересдач - для отдельной группы можно будет в порядке возрастания выделить дату сдачи экзамена/зачёта и всю цепочку из 2-3 пересдач.
11.  Собственно, сдача студентом определённой "дисциплины": ид_студента + ид_дисциплины + дата_сдачи + оценка.
Вот такой набросок. 11 таблиц - больше 4. Но, как на меня, запросы будут проще.

Добавлено @ 12:44 
забыл про семетры.
но для определения последней оценки по предмету с такой структурой они не нужны.  
PM MAIL   Вверх
KaKTyCc
Дата 13.6.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



для такого глобального изменения времени конечно нет уже

насчет дат сессии согласен, не нужны в журнале

1.  это так и есть
2.  так и есть, +в группе текущий ее семестр

4. так и есть+должность и степень и id кафедры

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


какой косяк есть, так это то - что нельзя несколько преподавателей в одной группе к одному и тому же предмету закрепить
и нельзя узнать лабораторная/практическая и т.д.  - только зачет/экзамен/курсовая 
--------------------
Мой блог
PM MAIL WWW   Вверх
KaKTyCc
Дата 13.6.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



Цитата

какой косяк есть, так это то - что нельзя несколько преподавателей в одной группе к одному и тому же предмету закрепить
и нельзя узнать лабораторная/практическая и т.д.  - только зачет/экзамен/курсовая  


можно для каждой строки плана создавать под план

тоесть есть в  плане  - Математический анализ экзамен, 200 часов, 1 семестр

для него создавать свой план - id_препода, 160 часов лекции
id_препода, 40 часов практика

что то типа этого 
--------------------
Мой блог
PM MAIL WWW   Вверх
skyboy
Дата 13.6.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



что означает поле session_type?
в чём отличие между полями id_plan и id_work_plan?  
PM MAIL   Вверх
KaKTyCc
Дата 13.6.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 2.8.2005

Репутация: 1
Всего: 1



session_type - это Экзамен/зачет/Курсовая

id_plan - уто учебный план, все предметы
скльок часов и т.д. 

у каждой специальности свой учебный план

id_work_plan здесь закрепляется id_plan за преподавателем (id_teacher) и за группой ( id_group)
тоесть какой препод какой предмет читает в какой группе 
--------------------
Мой блог
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.