Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.09.2010, 21:42
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Вопрос определение результатов

доброго время суток.
народ, подкиньте идею по решению такого вопроса (что-то никак не могу заставить мозг работать как надо ) :
имеется таблица opers с полями ID, oper_id, oper_result и т.д. (таблица всех проделанных работ)
имеется таблица dic_oper_type с полями id, oper_type_id, oper_name и т.д. (таблица типов работ)
поля opers.oper_id и dic_oper_type.oper_type_id являются связанными один ко многим.
так вот мне нужно (возможно создать еще одну таблицу) которая бы имела связь с таблицей dic_oper_type и содержала в себе перечень результатов выполнения работы.
Напр:
1) работа "импорт" - тип работы "загрузка данных в БД" - возможные результаты выполнения "1.успешно; 2.ошибка загрузки; 3.Обработано с ошибками"
2) работа "экспорт" - тип работы "выгрузка данных с БД" - возможные результаты выполнения "1.выгружено; 2.подтверждено; 3.обработано; 4.Обработано с ошибками
=========
субд: Firebird 2.1
у кого есть какие-нить идеи по реализации подобной задачи ?

====================
UPD
пока единственное более или менее нормальное что пришло в голову это: между таблицами dic_oper_type и dic_oper_result создать промежуточную таблицу вида:
oper_type_id|oper_result_id
1|1
1|2
1|3
2|1
2|2
2|3
и потом доставать все результаты связывая таблицы через эту таблицу
---------------------
у кого будут другие идеи ???
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 17.09.2010 в 22:37.
Ответить с цитированием
  #2  
Старый 18.09.2010, 02:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
SELECT T.oper_name, O.oper_result, COUNT(O.id) as CNT
FROM opers O LEFT JOIN dic_oper_type T ON O.oper_id = T.id
GROUP BY T.oper_name, O.oper_result
ORDER BY T.oper_name, O.oper_result

Поле CNT можно в очет не выводить.

Еще один вариант того-же:
Код:
SELECT DISTINCT T.oper_name, O.oper_result
FROM opers O LEFT JOIN dic_oper_type T ON O.oper_id = T.id
ORDER BY T.oper_name, O.oper_result
Ответить с цитированием
  #3  
Старый 18.09.2010, 05:07
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Если я правильно понял задачу, то тебе надо будет в любом случае создать еще одну таблицу (резальтат работы), но связывать ее не со словарем типов работ, а с таблицей работы, в нее добавить еще одно поле id_result, которое будет связано с таблицей results, в кторой и будут описаны все возможные результаты работ.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #4  
Старый 18.09.2010, 09:40
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

lmikle, или я "торможу" т.к. не понял что Вы хотели єтим сказать или Вы не так поняли суть вопроса

Aristarh Dark, все верно Вы поняли.
дело в том что для разных oper_type возможны одинаковы oper_result.
вот мне и нужно сделать так, чтобы при выборе определённого oper_type выбрать только те oper_result которые подходят для него.
я, конечно, могу набить несколько одинаковых oper_result-ов с ссылками на разные oper_typе, НО это не рационально.
поэтому и ищу альтернативные варианты
=============
На данный момент я остановился на варианте с доп. таблицей связывающей обе таблицы, НО если у кого будут варианты - готов выслушать и рассмотреть
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter