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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.02.2010, 21:44
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание Вопрос по БД

Ребята вопрос такой - имееться несколько машин
например

Митсубиши
Ниссан
Мазда

у этих машин куча информации
например

Митсубиши Лансер
Митсубиши Эклипс
Митсубиши Галант
Мазда RX8
Мазда RX7
Ниссан 350z
Nissan Altima

короче машин полно и информации о них тоже - тперь вопрос такой
надо все машини отдельно загружать в базу или есть некий другой способ чтоб потом при поиске(с фильтром) не было проблемм???

например одинаковых моделей Мазды пять штук и они отличаються только цветами - их надо все ввести в базу??? или есть какой то другой способ???


наверно вопрос дуратский - просто я только только учусь программировать использованием БД....заранее извините....и спасибо огромное
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #2  
Старый 02.02.2010, 21:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Внимательно читаем любую книжку по теории БД - про нормальные формы. И будет тебе счастье.

Тебе нужны 4 таблицы (предполагаем, что ты заносишь в БД конкретные машины, каждая со своим VIN'ом и т.д.):
- Color (ID, Name) - названия цветов
- CarType (ID, Name) - Фактически - производители
- CarModel (ID, CarTypeID, Name) - модель, CarTypeID - ссылка на производителя
- Car (ID, CarModelID, ColorID, VIN, Price, ...) - описание машины, CarModelID - ссылка на модель, ColorID - ссылка на цвет.

Получение списка будет производится путем различных группировок и аггрегирования. Фильтр реализуется путем подгрузки нужных справочников в ComboBox'ы и в дальнейшем через WHERE указание нужных параметров запроса.
Ответить с цитированием
  #3  
Старый 02.02.2010, 21:52
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Посоветуй имменную книгу - название книги...пожалуста очень хочу это реолизовать....
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #4  
Старый 02.02.2010, 23:59
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Я правильно понимаю что надо для каждой машины создать отдельную таблицу что то в роде этого

Mazda-
--Модель
--Цвет
--Год выпуска

Nissan-
--Модель
--Цвет
--Год выпуска


так вить и их сохранять в отдельные файлы?

Я весь инет нарыл нигде нормальной информации нету - как соединить таблицы....в принципе я структуру знаю как оно будет работать- примерно так

При поиске выбераем марку машины и грузиться инфа на DBGrid с его таблицы....просто как в конце обеденить модели машин в одно целое

за любой совет буду очень благодарен...
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #5  
Старый 03.02.2010, 09:53
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

lmikle все правильно написал!
Т.е. тебе надо 4 таблицы: 1-таблица цветов, 2-таблица марка машины, 3-таблица модель, 4- общая таблица
Т.е. в общей таблице хранятся ссылки на другие таблицы.
Пример:
Код:
1 таблица:
id     color
1     red
2    gren

2 таблица:
id    type
1     mazda
2     opel

3 таблица:
id    TypeId Model
1     1          626     (т.е. мазда 626)
2     2          kadet   (т.е. опель кадет)
3     1          6         (мазда 6)

4 таблица:
id   ModelID  ColorId    VIN
1      3             1         45fgdf   (т.е. мазда 6 красного цвета с винномером 45fgdf)
2      2             2         eeeee   (т.е. опель кадет зеленого цвета с винномером eeee)
Ответить с цитированием
  #6  
Старый 03.02.2010, 11:03
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Цитата:
Сообщение от Electronic_Arts
Посоветуй имменную книгу - название книги...пожалуста очень хочу это реолизовать....
Ну почитай "Мир InterBase" Ковязин. Там расписаны основы БД, с примерами как это все на дэльфи замутить
Ответить с цитированием
  #7  
Старый 06.02.2010, 23:01
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ребята всем огромное спасибо - вроде получаеться - но у мя есть вопрос

AllTable1 + AllSources1 - это общая таблица
TypeTable1 + TypeSources1 - таблица с марками машин
ColorTable1 + ColorSources1 - таблица с цветами (оно связано с таблицей Марка машин)

Теперь в общей таблице такой результат получился

Цитата:
id ModelID ColorId
1 1 5
2 1 6
3 1 4
4 1 3
5 2 5
6 2 7

в списке 4 машины Мазда с разными цветами
и 2 машины Ауди

проблема в том что - когда я подключаю Lookupcombobox1 у него в списке я получаю не имена машин а

Код:
1
1
1
1
2
2

как сделать чтоб вместо этого отображались название машин...чтоб вместо 4 - "1" стояло одна строка Мазда а вместо 2 - "2" строка Ауди - а не отображал 4строки Мазды и 2строки Ауди???
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #8  
Старый 06.02.2010, 23:10
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Суть этого в том что - я хочу сделать поиск по тем приметам которые имеються в базе - если в базе только Мазда и Ауди то зачем мне грузиться в LookupCombobox1 остальные марки
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #9  
Старый 07.02.2010, 20:42
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ребят ну помогите а...застрял в одной проблемой

В таблице TypeTable1 у меня куча марок машин - при добавлении информации LookupCombobox1 подключаеться к нему
теперь проблема в том - как сделать поиск с теми марками машин которые имеються в общей таблице??????
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #10  
Старый 08.02.2010, 02:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вот код, который возвращает только те записи из таблицы TypeTable1, ID'ы которых есть в основной таблице:

Код:
SELECT * FROM TypeTable1 T1
WHERE T1.ID IN (SELECT DISTINCT TypeID FROM Cars)
Ответить с цитированием
  #11  
Старый 08.02.2010, 17:26
Vasuha Vasuha вне форума
Прохожий
 
Регистрация: 04.02.2010
Сообщения: 6
Репутация: 10
По умолчанию

SELECT * FROM TypeTable1 T1 LEFT JOIN Cars ON T1.ID = Cars.TypeId Where not IsNull(Cars.TypeId)
с одним селектом будет быстрей
Ответить с цитированием
  #12  
Старый 08.02.2010, 21:18
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Спасибо ретята - помогло - но остлся одна проблемка - а как сделать тоже самое но с таблицой в котором Цвета машин

Мы получили в первой DBLookupCombobox1 список машин которые имеються в общей таблице - но нам еще нужно получить цвета тех машин которые мы уже добавили в DBLookupCombobox1

потому что если мы в DBLookupCombobox1 выбрали марку МАЗДА нам не нужно цвет номером 7 - А оно у меня стоит в списке - и это приводит результат поиска к нулю....

Как можно решить такую проблему?
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #13  
Старый 09.02.2010, 10:25
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ссори не правильно выразился
способом который сказал lmikle я филтровал список с цветами и подключил результат л DBLookupCombobox2
теперь мне как сделать чтоб - при выборе марки машины из DBLookupCombobox1
на DBLookupCombobox2 загрузились те цвета которые имеються у марки машины название которой мы уже выбрали в DBLookupCombobox1?
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #14  
Старый 09.02.2010, 10:26
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ссори не правильно выразился
способом который сказал lmikle я филтровал список с цветами и подключил результат л DBLookupCombobox2
теперь мне как сделать чтоб - при выборе марки машины из DBLookupCombobox1
на DBLookupCombobox2 загрузились те цвета которые имеються у марки машины название которой мы уже выбрали в DBLookupCombobox1?
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #15  
Старый 09.02.2010, 19:13
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
По умолчанию

Вот сам проект
Вложения
Тип файла: rar CarBase.rar (16.6 Кбайт, 4 просмотров)
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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