![]() |
|
Модераторы: Akella |
![]()
|
|
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Помогите пожалуйста срочно нужна помощь лузеру(((
Есть 2 таблицы DOGOVOR (...,base_price, total_price) и OTELI_TURA(...., doplata) и промежуточная между ними таблица VARIANT_TURA. Мне нужно, чтобы в поле total_price (DOGOVOR) ссумировалось значение поля base_price (DOGOVOR) и поля doplata (OTELI_TURA). Наверное нужно использовать триггеры??Подскажите я в этом новичок((( ОЧЕНЬ НУЖНО, ЗАРАНЕЕ БЛАГОДАРНА! |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Когда суммировались? Зачем суммировались?
Может и триггеры, а может и не они. Можно задачу озвучить яснее? Получить итоговую сумму можно как минимум полудесятком способов... Какие у тебя связи между таблицами? И что храниться в каждой из них? Добавлено @ 18:28 Вот пример получения итоговой суммы
Это сообщение отредактировал(а) Fortop - 27.4.2008, 18:28 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Может быть нужно создать поле как вычисляемое??прямо при создании таблице, там нужно использовать скрипт.
Суммировтаь нужно, чтобы при добавлении новой записи, например нового тура с определенной базовой ценой и доплатой сразу выводилась общая сумма. таблица ДОГОВОР и ОТЕЛИ ТУРА между собой напрямую не связаны, есть промежуточная таблица ВАРИАНТ ТУРА. В т.ОТЕЛИ ТУРА есть FK id_variant_tura и в ДОГОВОРЕ имеется точно такой же вторичный ключ, оба они ссылаются на РК (id) т.ВАРИАНТ ТУРА. |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Может быть стоит, при добавлении договора сразу записывать общую сумму в таблицу и не мучаться с вычисляемыми полями?
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Да, я понимаю..но хотелось бы автоматизировать....очень хотелось....а то нужно смотреть данные из одной таблицы..суммируя их с данными в другой....а препод жесткий....вот и хочется минимум вычислений самим(((
|
|||
|
||||
| Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Все эти данные в любом случае нужно будет смотреть, когда будет добавляться новый договор. Дело в том что сумму можно вообще не хранить, а извлекать при запросе, как я показал выше.
У тебя при добавлении тура, договор не добавляется? Я логики базы понять не могу - структура базы достаточно странная. Схема ее есть? -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Да из меня и проектировщик достаточно странныйс какой стороны не посмотреть(((Это все учебное...но...
Добавлено через 7 минут и 25 секунд Просто это все начало...потом я буду пытаться создать сайт...с удаленным доступом к этой базе...и чувствую, что вычисляемые поля...это цветочки...по сравнению...чтоб будет дальше.... Присоединённый файл ( Кол-во скачиваний: 9 )
__.emf 23,70 Kb |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Все в общем-то нормально
два замечания. 1. БАЗОВУЮ_ЦЕНУ надо перенести в ВАРИАНТЫ_ТУРА (ведь договор у каждого клиента свой) 2. ДОПЛАТА - я бы перенес в таблицу отелей И тогда ОТЕЛИ_ТУРА не нужны и ВАРИАНТЫ_ТУРА напрямую будут связаны с ОТЕЛИ. А при создании договора ты в любом случае будешь читать из базы данные по отелю и по туру. И сложить 2ве цены - несложно. Можно конечно усложнять до безобразия. например, доплату(т.е. цену отеля) вынести в отдельную таблицу.
Т.е. ЦЕНА проживания сможет меняться от времени года (месяца, и т.д.) и срока (например 2 дня в сезон, это далеко не то же, что и 2 дня в несезон). Это сообщение отредактировал(а) Fortop - 28.4.2008, 20:24 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Ок, спасибо большое за замечания))учту)))А во с еще одной таблицей заморачиваться наверное не буду...а что касается вычисления общей суммы...ее так и оставить в договоре?...и как все-таки она будет вычисляться??каим т.е. мезанизмом?...
я канеша извиняюсь..наверное вопросы тупее некуда...но просто из меня программист, как из слона балерина((( |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Лучше ее конечно вычислять и добавлять вместе с договором.
Поскольку при составлении договора ты все равно будешь получать информацию об отеле и туре Можно сделать поле COMPUTED но в случае если у тебя цена тура измениться, в старых договорах цены тоже пересчитаются, что не очень хорошо А можно и сделать лишние телодвижения, в виде триггера, который будет делать лишний запрос и затем записывать цену при добавлении договора. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Вот третий вариант для меня навреное самое лучшее))))Я изначально так и хотела)))Ес ди нетрудно примерчик можно?
|
|||
|
||||
| Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
kat809, это далеко не лучший вариант
Вместо 1го запроса, тебе придется писать запрос и триггер Вот пример простого триггера
вот пример сложного триггера
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Fortop, это не сложный а длинный триггер. Без обид.
Конструкцию типа:
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| kat809 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 19.4.2008 Где: г.Белгород Репутация: нет Всего: нет |
Я немного изменила структуру БД, не могли бы вы опятным взглядом посмотреть?)))
Присоединённый файл ( Кол-во скачиваний: 7 )
base.emf 20,74 Kb |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Тебе +1 просто за то, что ты решил в нем разобраться Потому что даже я в этот код не лезу Но так как он содержит в себе INSERT, SELECT, UPDATE kat809, эк ты скрестила опыт со словом опять Но что ты хочешь чтобы мы рассмотрели? Структура, в общем и целом, для учебной задачи - подойдет -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |