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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.11.2016, 19:08
qwery2004 qwery2004 вне форума
Прохожий
 
Регистрация: 21.11.2008
Сообщения: 4
Репутация: 10
По умолчанию БД для учета

Всем доброго времени суток! Ситуация такая что к чертям забыл что когда то щелкал как орешки и думал что во мгновение ока реализую. Задача встала такая: необходимо проводить учет устройств оборудования на объектах, ну и дополнительно накидать туда удобных феничек.
БД создал на 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.код

выводит на новую строку
Изображения
Тип файла: jpg Безымянный copy.jpg (79.7 Кбайт, 4 просмотров)
Вложения
Тип файла: rar mr - копия.rar (17.3 Кбайт, 0 просмотров)
Ответить с цитированием
  #2  
Старый 04.11.2016, 23:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Для начала, неплохо было бы сформулировать задачу более четко.
Потом выделить сущности и их связи. Это все еще в терминах домена данных. После этого надо написать UseCase'ы. Вот после этого будет понятно как БД надо проектировать.
Вообще, если делать по правильному, то там должна получиться довольно сложная схема.
Ответить с цитированием
  #3  
Старый 05.11.2016, 13:48
qwery2004 qwery2004 вне форума
Прохожий
 
Регистрация: 21.11.2008
Сообщения: 4
Репутация: 10
По умолчанию

В приложенных файлах есть и схема данных и база на ацессе...
Ответить с цитированием
  #4  
Старый 05.11.2016, 16:51
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от lmikle
Для начала, неплохо было бы сформулировать задачу более четко.
Цитата:
Сообщение от qwery2004
В приложенных файлах есть и схема данных и база на ацессе...

@lmikle: http://www.delphisources.ru/forum/sh...postcount=1048
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 05.11.2016, 19:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от qwery2004
В приложенных файлах есть и схема данных и база на ацессе...

ну дык неправильная схема.
Да и из того, что написано, есть разные варианты.
Поэтому еще раз:
1. Сформулируй четко задачу в терминах домена знаний.
2. Выдели сущьности. Подумай, какие атрибуты этих сущностей могут быть единичными, какие - множественными
3. Выпиши сценарии использования для выделения искустенных связующих сущностей.
Тогда сам увидишь все проблемы и как их решать.
Ответить с цитированием
  #6  
Старый 07.11.2016, 15:08
qwery2004 qwery2004 вне форума
Прохожий
 
Регистрация: 21.11.2008
Сообщения: 4
Репутация: 10
По умолчанию

схему упростил!
суть проблемы не изменилась! не могу в 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)
Вложения
Тип файла: rar mr.rar (22.7 Кбайт, 2 просмотров)

Последний раз редактировалось qwery2004, 07.11.2016 в 15:13.
Ответить с цитированием
Этот пользователь сказал Спасибо qwery2004 за это полезное сообщение:
mutosha_3 (12.04.2017)
  #7  
Старый 07.11.2016, 15:15
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

А "name" разве не является зарезервированным именем в SQL?
если является то следует использовать `name`
Ответить с цитированием
  #8  
Старый 07.11.2016, 19:34
qwery2004 qwery2004 вне форума
Прохожий
 
Регистрация: 21.11.2008
Сообщения: 4
Репутация: 10
По умолчанию

При таком коде...

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  
Старый 08.11.2016, 02:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Так не получится. Ну если не делать разных извращений.
Хотя это тебе и не надо. У тебя классическое 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
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter