Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
Студент заочник   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
8-35389
Yaro
2002-04-04 17:53
2002.08.12
Быстрее ScanLine


3-35152
Daiz13
2002-07-19 12:44
2002.08.12
Вопрос по вложеным запросам


14-35406
Malder
2002-07-13 13:04
2002.08.12
CIAcomander


14-35410
OZZY
2002-07-16 13:42
2002.08.12
Документация


3-35209
E-Master
2002-07-20 14:39
2002.08.12
Почему половина записей остаются без изменений?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский