|
#1
|
|||
|
|||
БД для учета
Всем доброго времени суток! Ситуация такая что к чертям забыл что когда то щелкал как орешки и думал что во мгновение ока реализую. Задача встала такая: необходимо проводить учет устройств оборудования на объектах, ну и дополнительно накидать туда удобных феничек.
БД создал на access 1. mr обЪект имеет: название,почту, акты,дата нач/дата оконч, и некоторое оборудование (ноут, телефон2шт,модем,принтер), коментарии 2. device устройства-оборудования: имеют так же название, тип устройства(ноут, телефон,модем,принтер), айпи, сер.ном, коментарии итд. база и схема данных прилагается. 1 может кто подскажет на сколько правильно составлена бд и что можно изменить 2. в итоге в делфаке в дбгриде через sql запрос не получается вивести таблицу вида: Наимен | Тел1 | Тел2 | почта | Северн | 3232 | 3131 |аврпап| Нижнее | 3030 | ...... |варвар| Прошу помощи... sql SELECT name.name, mr.mail, device.nomber FROM name, mr, device dev1,device dev2 WHERE name.код = mr.idname and device.mr = mr.код выводит на новую строку |
#2
|
|||
|
|||
Для начала, неплохо было бы сформулировать задачу более четко.
Потом выделить сущности и их связи. Это все еще в терминах домена данных. После этого надо написать UseCase'ы. Вот после этого будет понятно как БД надо проектировать. Вообще, если делать по правильному, то там должна получиться довольно сложная схема. |
#3
|
|||
|
|||
В приложенных файлах есть и схема данных и база на ацессе...
|
#4
|
||||
|
||||
Цитата:
Цитата:
@lmikle: http://www.delphisources.ru/forum/sh...postcount=1048 — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
Цитата:
ну дык неправильная схема. Да и из того, что написано, есть разные варианты. Поэтому еще раз: 1. Сформулируй четко задачу в терминах домена знаний. 2. Выдели сущьности. Подумай, какие атрибуты этих сущностей могут быть единичными, какие - множественными 3. Выпиши сценарии использования для выделения искустенных связующих сущностей. Тогда сам увидишь все проблемы и как их решать. |
#6
|
|||
|
|||
схему упростил!
суть проблемы не изменилась! не могу в SQLскрипте добавить к полю NAME(из таблицы mr) дваполя nomer(из таблицы Device) SELECT mr.mrname, dev1.nomber, dev2.nomber FROM mr JOIN device dev1 ON ( dev1.mr = mr.код and dev1.typedevice = 1) JOIN device dev2 ON ( dev2.mr= mr.код and dev1.typedevice = 2) Последний раз редактировалось qwery2004, 07.11.2016 в 15:13. |
Этот пользователь сказал Спасибо qwery2004 за это полезное сообщение: | ||
mutosha_3 (12.04.2017)
|
#7
|
|||
|
|||
А "name" разве не является зарезервированным именем в SQL?
если является то следует использовать `name` |
#8
|
|||
|
|||
При таком коде...
SELECT mr.mrname, d1.nomber, d1.nomber FROM mr INNER JOIN device d1 ON mr.Код = d1.mr WHERE (([d1]![typedevice]=1) OR ([d1]![typedevice]=2)) получается mrname | Expr1001 | nomber | ----имя1|----000001|--000001| ----имя1|----000002|--000002| ----имя2|----000003|--000003| ----имя2|----000004|--000004| а должно быть что то вроде mrname | nomer1 | nomber2| ----имя1|---000001|--000002| ----имя2|---000003|--000004| |
#9
|
|||
|
|||
Так не получится. Ну если не делать разных извращений.
Хотя это тебе и не надо. У тебя классическое Master-Detail представление. Просто в клиенте должно быть 2 запроса, свзязанных через Master-Detail связку. И 2 грида для отображения. В первом, Master, выбираются все строки из mr (или как оно там у тебя), во втором, Detail, - из device. За счет связи Master-Detail второй список будет отфильтрован, т.е. будет показывать только те записи, которые связаны с текущей записью в Master запросе/таблице. Хотя еще раз говорю -скорее всего схема не правильная. В правильной схеме, как я предполагаю, оборудование перемещается на объект не на всегда, а на какое-то (даже пусть длительное) время. Т.О. тут надо организовывать свзь Мноеги-Ко-Многим, что бы отслеживать это дело. Например: Код:
DEVICE DEVICE_OBJECT OBJECT ------ ------------- ------ ID <----- DEVICE_ID NAME OBJECT_ID ------> ID NAME IS_ACTIVE |