Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Связь между таблицами / 13 сообщений из 13, страница 1 из 1
29.05.2019, 16:33
    #39819958
laurence22712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
Здравствуйте. Я разрабатываю базу данных, У меня имеется две таблицы, связанные между собой. Связь один-ко-многим.
1 таблица - производители процессоров; (имена полей: proiz_id, proiz_name)
2 таблица - поколение; (pokol_id; pokol_idsv; pokol_name)
Связаны: proiz_id и pokol_idsv

используются: ADOQuery - 2, DataSource - 2, ADOConnection - 1, DBGrid - 2;
Подключенная база данных Access (SQL)


Мне необходимо чтобы выбрав, например, Intel из первого грида, во втором гриде высветилось именно - I3, I5, I7
Выбрав AMD, во втором гриде высветилось только: A5, A6...
Не знаю, что писать в событие AfterScroll, либо может другие способы есть, реализовать это

Вот ссылка на проект:
...
Рейтинг: 0 / 0
29.05.2019, 16:43
    #39819968
laurence22712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
laurence22712,
Вот ссылка на проект: https : // yadi .sk / d /7ZvbQuA5ghHWaw
...
Рейтинг: 0 / 0
29.05.2019, 16:51
    #39819978
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
...
Рейтинг: 0 / 0
29.05.2019, 16:54
    #39819984
laurence22712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
Gerasimenko,
Мне через ADOQuery надо, а не Table...
...
Рейтинг: 0 / 0
29.05.2019, 17:16
    #39820009
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
laurence22712Gerasimenko,
Мне через ADOQuery надо, а не Table...
Тогда ручками пишите в DataSource1->OnDataChange :

1 вариант) фильтр во втором наборе данных
2 вариант) перезачитать набор данных
...
Рейтинг: 0 / 0
02.06.2019, 09:11
    #39821260
laurence22712
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
Добрый день. Мне необходимо отобразить данные в DBgrid в Delphi 7, используя ADOQuery, SQL и Access.
Таблиц всего десять:
Главная таблица в которой есть поля, данные берутся из других таблиц:
1 производитель ноутбуков берется из таблицы "производитель ноутбуков"
2 модель ноутбука берется из таблицы "модели ноутбуков", которая связана с "производители ноутбуков"
3 производитель процессора берется из таблицы "производители процессоров"
4 тип (поколение) процессора - берется из таблицы "поколение", которая связана с "произ процессоров"
5 модель процессора - из таблицы модели, которая связана с "поколение"
6 производитель монитора - из табл "произ мониторов"
7 модель монитора - из табл модель монитора, которая связана с "произ. мониторов"
8 производитель периф. ус-ва - из табл "производители периф. ус-ва"
9 модель периф ус-ва - из табл модели периф ус-ва, которая связана с "производители"
Вот, имеется картинка связей, в которой сложно разобраться - рисунок 1
Далее, я создаю SQL-запрос - рисунок 2

ВОт он
Код: plsql
1.
2.
SELECT MainTable.*, Monitor.*, Notebook.*, Periph.*, Processor.*, CreatorMonitor.*, CreatorNotebook.*, CreatorPeriph.*, PokolProcessor.*, ModelProcessor.* 
FROM Processor RIGHT JOIN (PokolProcessor RIGHT JOIN (Periph RIGHT JOIN (Notebook RIGHT JOIN (Monitor RIGHT JOIN (ModelProcessor RIGHT JOIN (CreatorPeriph RIGHT JOIN (CreatorNotebook RIGHT JOIN (CreatorMonitor RIGHT JOIN MainTable ON CreatorMonitor.cmonitor_id = MainTable.monitor_model) ON CreatorNotebook.cnotebook_id = MainTable.notebook_model) ON CreatorPeriph.cperiph_id = MainTable.periph_model) ON ModelProcessor.model_id = MainTable.processor_model) ON (Monitor.monitor_id = MainTable.monitor_creator) AND (Monitor.monitor_id = CreatorMonitor.cmonitor_idsv)) ON (Notebook.notebook_id = MainTable.notebook_creator) AND (Notebook.notebook_id = CreatorNotebook.cnotebook_idsv)) ON (Periph.periph_id = MainTable.periph_creator) AND (Periph.periph_id = CreatorPeriph.cperiph_idsv)) ON (PokolProcessor.pokol_id = ModelProcessor.model_idsv) AND (PokolProcessor.pokol_id = MainTable.processor_type)) ON (Processor.processor_id = PokolProcessor.pokol_idsv) AND (Processor.processor_id = MainTable.processor_creator);






Вставляя в ADOQuery в Delphi, после активируя его, вылезает ошибка "не поддерживается выражение объединения"

Вот файл Access, если что


Я Надеюсь очень на вас! Мне до завтра надо сделать это!
...
Рейтинг: 0 / 0
02.06.2019, 10:14
    #39821268
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
не будем помогать - слишком маленькие и недостаточно красные буквы
...
Рейтинг: 0 / 0
02.06.2019, 11:49
    #39821277
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
X11,

и слишком мало градиента
и слишком много данных
и слишком тупой запрос
и слишком мало знаний
...

Пусть в школу ходит и учится учителей
Ещё успеет получить люлей
И от педагогов
И от команд
И форумов
И просто так
От разных OR и AND
А что получит от клиентов и начальства
Мне, например смешно и так
...
Рейтинг: 0 / 0
02.06.2019, 12:25
    #39821283
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
...
Рейтинг: 0 / 0
02.06.2019, 15:07
    #39821317
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT MT.*, M.*, N.*, P.*, Pr.*, CM.*, CN.*, CP.*, PP.*, MP.* 
MainTable MT 
RIGHT JOIN PokolProcessor PP ON PP.pokol_id = MP.model_idsv AND PP.pokol_id = MT.processor_type
RIGHT JOIN Processor Pr Pr.processor_id = PP.pokol_idsv AND Pr.processor_id = MT.processor_creator
RIGHT JOIN Periph P ON P.periph_id = MT.periph_creator AND P.periph_id = CP.cperiph_idsv
RIGHT JOIN CreatorMonitor CM ON MT.monitor_model = CM.cmonitor_id
RIGHT JOIN CreatorNotebook CN ON CN.cnotebook_id = MT.notebook_model
RIGHT JOIN CreatorPeriph CP ON CP.cperiph_id = MT.periph_model
RIGHT JOIN ModelProcessor MP ON MP.model_id = MT.processor_model
RIGHT JOIN Monitor M ON M.monitor_id = MT.monitor_creator AND M.monitor_id = CM.cmonitor_idsv
RIGHT JOIN Notebook N ON N.notebook_id = MT.notebook_creator AND N.notebook_id = CN.cnotebook_idsv
...
Рейтинг: 0 / 0
02.06.2019, 17:18
    #39821346
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
DimaBr,

Я убит подо Ржевом,
безымянными звёздами,
упавшими на процессор
и клиент погряэнет под лавинойй айдей.
План исполнения сохранится в Истории.

...
Рейтинг: 0 / 0
02.06.2019, 17:28
    #39821352
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
Думаю, что скорее всего правильнее будет LEFT JOIN, но это уже зависит от методологии запроса, а не к синтаксису
...
Рейтинг: 0 / 0
02.06.2019, 20:52
    #39821382
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь между таблицами
DimaBr,

Тут всяко-разно бывает. Надо план исполнения смотреть и статистику "подзапросов"
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Связь между таблицами / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]