|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
определение результатов
доброго время суток.
народ, подкиньте идею по решению такого вопроса (что-то никак не могу заставить мозг работать как надо ) : имеется таблица 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
|
|||
|
|||
Код:
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
|
||||
|
||||
Если я правильно понял задачу, то тебе надо будет в любом случае создать еще одну таблицу (резальтат работы), но связывать ее не со словарем типов работ, а с таблицей работы, в нее добавить еще одно поле id_result, которое будет связано с таблицей results, в кторой и будут описаны все возможные результаты работ.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
||||
|
||||
lmikle, или я "торможу" т.к. не понял что Вы хотели єтим сказать или Вы не так поняли суть вопроса
Aristarh Dark, все верно Вы поняли. дело в том что для разных oper_type возможны одинаковы oper_result. вот мне и нужно сделать так, чтобы при выборе определённого oper_type выбрать только те oper_result которые подходят для него. я, конечно, могу набить несколько одинаковых oper_result-ов с ссылками на разные oper_typе, НО это не рационально. поэтому и ищу альтернативные варианты ============= На данный момент я остановился на варианте с доп. таблицей связывающей обе таблицы, НО если у кого будут варианты - готов выслушать и рассмотреть Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|