Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

две таблицы   Найти похожие ветки 

 
Студент заочник   (2002-07-23 11:02) [0]

Спасите меня от препода по "Базам данных"!!!
Есть две таблицы Org(организации) и Manager(менеджеры).
Отношение M:1, связаны по ключевому полю id_manager.
Так вот, надо вывести для каждого менеджера, список его предприятий.
А цикл организовать не могу. Всякий гон получается. Блок-схему даже нарисовал.
По схеме должно работать, на практике не работает. ПОМОГИТЕ!!!
работаю без SQL


 
Alexandr ©   (2002-07-23 11:07) [1]

учиться надо было.


 
Val ©   (2002-07-23 11:12) [2]

цикл while not eof по таблице менеджеров и внутренний такой же цикл по таблице предприятий с проверкой, на равенство id.
Интересный подход конечно.
Да вас от препода не только по БД спасать надо ;)


 
Студент заочник   (2002-07-23 11:25) [3]

А помочь слабо? Ладно не надо... Сам разберусь.


 
***   (2002-07-23 11:26) [4]

select manager.managerid,orgid
from manager,org
where org.managerid=manager.managerid


 
Студент заочник   (2002-07-23 11:28) [5]

для ***. Спасибо конечно, но SQL не канает.


 
Alexandr ©   (2002-07-23 11:29) [6]

ну разбирайся...
Если SQL не канает, ты бы написал, что канает?


 
Val ©   (2002-07-23 11:51) [7]

а как вам еще помочь - программку написать?


 
LordOfSilence ©   (2002-07-23 13:22) [8]

tblManager.First();
while not tblManager.EOF do begin
WrilteLn( "ManagerName" );
tblOrganization.First();
while not tblOrganization.EOF do begin
if tblOrganization.FieldByName( "id_manager" ).AsInteger =
tblManager.FieldByName( "id_manager" ).AsInteger then
WrilteLn( "OrganizationName" );
tblOrganization.Next();
end;
tblManager.Next();
end;

Алгоритм схематичный и совершенно "тупой".
Но ведь я же не знаю условия задачи -
есть ли у Вас индексы, разрешено ли Вам
применять фильрование и т.п.
Операторы WriteLn, естественно, использовать не надо,
они показаны только для того, чтобы Вы видели, что
здесь с данными можно что-то сделать. Уж не знаю -
добавить в TMemo или TListBox, например...


 
MsGuns ©   (2002-07-23 13:31) [9]

>Val
Зря вы так на студента..
Надо ж понимать масштаб задач, а то послушаешь некоторых мастаков (и не очень), и получается, что для того, чтобы сделать простенькую прожку типа тел.справочника, надо обязательно ставить какого-нибудь монстра типа MsSQL..

> Студент - заочник
Все намного проще: берете 2 компонента TTable, один из них - на менеджеров (это будет мастер), второй - на организации (это детал). В в св-вах детала заполняете MasterField и MasterDataSet
по связующему ключу. (Этот ключ должен быть определен как первичный - Primary) в обеих таблах.
После этого кидаете на форму 2 TDBGrid, связывая их через DataSource с соотв. таблицами.
В рез-те при работе проги перемещение по верхней (мастер) таблице приводит к тому, что в нижней (детал) будет высвечиваться только те орг-ции, которые "принадлежат" текущему менеджеру.
Если надо именно ПЕЧАТАТЬ, то надо положить еще несколько компонент, в т.ч. некий DataSet, куда вы будете в цикле переписывать содержимое текущего детала

Успехов !!!


 
Val ©   (2002-07-23 13:47) [10]

>MsGuns © (23.07.02 13:31)
Зря вы так на студента..
Честно говоря, ничего обидного в своих постах не вижу. Человек не мог организовать цикл, словесный алгоритм я ему привел. Заметьте, алгоритм для студента первого семестра, изучающего паскаль(говорю с уверенностью, поскольку брат только в прошлом году поступил в институт и я видел их лабы - типизированные файлы(есть аналогия, не правда-ли?) изучают в первом семестре). Согласитесь, поиск данных вот в таком цикле при работе с БД- самый плохой вариант решения данного вопроса. Потому меня и удивил такой подход, причем при сознательном отрицании SQL-решения. Автор вопроса же видит в постах только то, что хочет и это его право.


 
VAleksey ©   (2002-07-23 13:59) [11]

Согласен со всем кроме этого

> Этот ключ должен быть определен как первичный - Primary)
> в обеих таблах.




Страницы: 1 вся ветка

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
3-35196
Ag2002
2002-07-19 18:15
2002.08.12
Число


1-35338
совсем Новенький
2002-07-29 20:01
2002.08.12
АЛГОРИТМЫ трансляции математических выражений. Mapl.


3-35204
bars
2002-07-18 23:16
2002.08.12
Как динамически обновлять БД, с помощью Table?


6-35402
Сатир
2002-05-29 14:11
2002.08.12
IdHTTP : OnAuthorization


1-35234
3asys
2002-07-30 14:07
2002.08.12
Как определить на каком компоненте установлен фокус ?