![]() |
|
|
![]()
|
|
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
Имеются таблицы bal (оценки) с полями nom (номер студента), pr_name(предмет), dat(дата), bal(оценка) и
tem(темы) c полями dat(дата), gr_name(группа), pr_name(предмет), tem(тема). При клике в таблицу на фамилию студента в другой таблице должен быть следующий вывод: Дата, тема, оценка. То есть поля dat и bal из таблицы bal и поле tem из таблицы tem.
При таком запросе не показывается ничего, поскольку что-то с темами не так. Как правильно составить подобный запрос? |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| cat512 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 1 Всего: 15 |
Не корректная структура бд. как минимум надо свяхать студентов и темы внешним ключом, его у тебя нет. А по хорошему надо нормализовать структуру - сделать связь M<->M (многие ко многим )между студентами и предметами , а между предметами и темами 1-->M, или оганичится иерархией тем у которых родитель - предмет. Добавлено через 4 минуты и 12 секунд Да, и связать группу со сткдентами связью 1->M |
||||
|
|||||
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
||||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 1 Всего: 15 |
ну так в запросе где связь по ключю???
|
|||
|
||||
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
Ключами связаны оценки и студенты через поле nom. Темы здесь не связаны. Мне просто надо чтобы выводилась тема, где pr_name = pr_name из оценок, gr_name = группе студента и дата из оценок опять же. попробовал прописать это в where, но что-то не так... Также связаны предметы и темы, группы и студенты, студенты и оценки. Это сообщение отредактировал(а) ezhik90 - 7.9.2010, 10:13 |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Смотрел я смотрел. Что то в структуре не то. Нормализировать надо что ли...
Например в таблице тем ввести ключевое поле и по нему связать с таблицей оценок. Тогда в оценках будут лишними поля предмет и дата. Но это так - не видя всей базы. |
|||
|
||||
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
superVad, в данной ситуации вывод тем с оценками не более чем оригинальная затея.... Так что в базе такая связь не нужна. Думаю, может просто сделать 3й DBGridEh для вывода отдельно тем...
|
|||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 1 Всего: 15 |
Да хоть 10-й SuperDBGrid ставь, Imho "из этого рая не выйдет ни.....чего". Тебе ясным языком сказали, пока нормально не свяжешь сущности( таблицы), правильного результата не получишь |
|||
|
||||
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
cat512, как же тогда их лучше всего связать?
есть таблицы:
группы (название группы) предметы (название предмета) оценки (дата, предмет, номер студента, оценка) темы (предмет, группа, дата, тема) |
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
как то так (щас нарисовать не знаю в чем)
группы (номер_группы, название_группы) студенты (номер_студента, номер_группы, фио) предметы (номер_предмета, название_предмета) темы (номер_темы, номер_предмета, номер_группы, дата, название_темы) оценки (номер_студента, номер_темы, оценка) потом данные такого (наверное) запроса фильтровать по мере надобности по номеру студента
|
|||
|
||||
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
||||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 1 Всего: 15 |
Что-то я непойму, а в чём проблемма -то? Пусть хоть миллион коннектов к серверу бд. Мне кажется ты не совсем правильно понимаешь технологию рабботы с серверами БД. Немного проясню: Обычно люди пользуются Case- средствами которые позволяют создать логическую модель сущность- связь, и преобразовать её в физическую модель конкретного сервера БД. После того как физ. модель реализованна на сервере, на клиенте затачивается UI(юзверь интерфейс) под конкретную модель. Соответсвенно, в твоём случае, отталкиваемся от модели которую подсказал тебе SuperVad, ты должен создать формочку добавления записей(сущностей) в табличку тем. В табличке тем у тебя три ключа, один Primary(собственно id темы), два других внешние на табличку предметов и на табличку групп. Id темы должен быть Автоинкрементным или генерироваться средствами сервера. запрос добавления записи будет выгляядеть примерно так
Это сообщение отредактировал(а) cat512 - 11.9.2010, 14:05 |
|||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 1 Всего: 15 |
Также. ты должен будеш реализовать Интерфейс заполнения табличек Групп, Студентов, Предметов, и табличек связей между ними, если таковые имеются. Таким образом ты получиш более менее рабочую систему, отражающую модель предметной области
Это сообщение отредактировал(а) cat512 - 11.9.2010, 14:08 |
|||
|
||||
| ezhik90 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 7.8.2010 Репутация: нет Всего: нет |
я не знаю синтаксис SQL и вообще впервые столкнулся с серверными бд на практике. но принципы работы знаю подстановку ID нашёл как организовать - через IDENTITY (использую MS SQL Server 2008) Это сообщение отредактировал(а) ezhik90 - 11.9.2010, 15:23 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |