powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Связь между таблицами
13 сообщений из 13, страница 1 из 1
Связь между таблицами
    #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
Связь между таблицами
    #39819968
laurence22712
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
laurence22712,
Вот ссылка на проект: https : // yadi .sk / d /7ZvbQuA5ghHWaw
...
Рейтинг: 0 / 0
Связь между таблицами
    #39819978
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь между таблицами
    #39819984
laurence22712
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gerasimenko,
Мне через ADOQuery надо, а не Table...
...
Рейтинг: 0 / 0
Связь между таблицами
    #39820009
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
laurence22712Gerasimenko,
Мне через ADOQuery надо, а не Table...
Тогда ручками пишите в DataSource1->OnDataChange :

1 вариант) фильтр во втором наборе данных
2 вариант) перезачитать набор данных
...
Рейтинг: 0 / 0
Связь между таблицами
    #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
Связь между таблицами
    #39821268
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не будем помогать - слишком маленькие и недостаточно красные буквы
...
Рейтинг: 0 / 0
Связь между таблицами
    #39821277
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

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

Пусть в школу ходит и учится учителей
Ещё успеет получить люлей
И от педагогов
И от команд
И форумов
И просто так
От разных OR и AND
А что получит от клиентов и начальства
Мне, например смешно и так
...
Рейтинг: 0 / 0
Связь между таблицами
    #39821283
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь между таблицами
    #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
Связь между таблицами
    #39821346
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

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

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

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


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