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

Вниз

объединение массивов данных???   Найти похожие ветки 

 
Алексей   (2004-08-07 11:22) [0]

Здравствуйте.
Использую в работе таблицы парадокс и эл-ты TTable.
При сканировании таблицы образуется набор итоговых данных, таких таблиц до 4, соответственно столько же и наборов. Как объеденить эти наборы на предмет общих данных. Множества позволяют накопить до 256 эл-тов, а там может быть и больше. Как быть?
Спасибо.


 
Алексей   (2004-08-07 15:15) [1]

Наверно это трудно...


 
Mike Kouzmine ©   (2004-08-07 16:47) [2]

Вероятно, да! А что такое "эл-ты"? И вообще, попонятнее пожалуйста.


 
Алексей   (2004-08-07 18:01) [3]

ок.
эл-ты это сокращенение элементы. позволил себе...
в общем, в процессе работы программы выполняется просмотр таблицы от начала до конца циклом. при совпадении определённого пользователем условия запоминается запись, а точнее данные о номере ключевого поля главной таблицы, сохранённый в просмотренной записи. в процессе просмотра растёт количество сохранённых ключей. таких таблиц просматривается несколько, в результате получается  несколько наборов данных с сохранёнными ключами. их (записи о ключах) надо сравнить друг с другом и найти общие для всех таблиц ключи. потом отфильтровать по ним главную таблицу. Проблемма именно в сравнении.
если опять чего непонятно скажите, опыта у меня не много могу и запутать... :)


 
сергей1   (2004-08-07 18:36) [4]

да действительно непонятно, если правильно понял, то ситуация следующая : по определенным критериям отбираются записи из нескольких таблиц, затем из получившихся наборов делают один набор на основе совпадения ключей. Правда непонятно что такое "отфильтровать по ним главную таблицу".
Зачем здесь цикл ? Разве не проще использовать select * from Table1 where field1 = "some_value". Закинуть это все во временные таблицы, а затем выбрать нужные записи путем, например, if exists(). Т.е. берется первая запись из первой таблицы и подставляется в if exists() во всех остальных таблицах, если возращается true во всех случаях, значит берем эту запись и помещаем в окончательный набор данных (если конечно я правильно понял проблему)


 
сергей1   (2004-08-07 20:06) [5]

вот более хорошее решение, сразу в голову не пришло :

select Key_field1 from Table1 t1
inner join Table2 t2 on t1.Key_field1 = t2.Key_field2
inner join Table3 t3 on t3.Key_field3 = t2.Key_field2

этот запрос вернет поля Key_field1, Key_field2, Key_field3 имеющие одинаковые значения во всех трех таблицах.
Теперь можно делать таинственную фильтровку (подозреваю, что выборку полей, имеющих те-же ключевые поля, что вернул вышеуказанный запрос, то-есть тем-же самым inner join"ом)


 
Алексей   (2004-08-07 22:27) [6]

уважаемый сергей1.
проблему вы поняли правильно. за термины извините, мало опыта, избретаю в процессе познавания.
>непонятно что такое "отфильтровать по ним главную таблицу".
просто сканируются подчинённые таблицы, а по результатам поиска и сравнения отбираются соответствующие записи в главной таблице.
если я использую TTable, то такие SQL запросы там не обрабатываются. нужно ииспользовать TQuery? а могут они одновременно в одном приложении работать или надо переделывать базу под этот компонент (или другой?)?
пардон за "ликбез" :).


 
сергей1   (2004-08-08 09:33) [7]

вообще, BDE является устаревшей технологией, и с нее надо сваливать, т.к. Borland отказалась от дальнейшей поддержки этой технологии. К сожалению, я работаю не с paradox"ом, так что не знаю, есть ли альтернатива BDE, вывеси вопрос в форуме, кто-нибудь ответит. Ну а TQuery ты конечно можешь использовать без кардинальной переделки базы. Вместо связки datasource -> ttable, используй datasource -> tquery, причем ты это можешь сделать программно на небольшой промежуток времени для выполнения запроса, а потом вернуть все назад (хотя это не есть хороший способ проектировать базы). В любом случае, я настоятельно рекомендую использовать SQL запросы вместо построчной обработки данных, т.к. в будушем останется один SQL, и ты со своими знаниями ttable никому не будешь нужен (кроме того, SQL всегда гораздо более производительный)


 
Алексей   (2004-08-08 22:20) [8]

Спасибо. Будем работать...


 
Германн ©   (2004-08-09 03:04) [9]

2 сергей1   (08.08.04 09:33) [7]
> (кроме того, SQL всегда гораздо более производительный)

Вашими устами да мед пить!



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

Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
3-1091035657
Ceval
2004-07-28 21:27
2004.09.05
проблема с удалением записей в dbf


14-1092823518
WondeRu
2004-08-18 14:05
2004.09.05
Люди, туплю уже час......


3-1092212181
Koala
2004-08-11 12:16
2004.09.05
Помогите с ХП


1-1092729700
velial
2004-08-17 12:01
2004.09.05
хитрый Grid


1-1093071320
Islander
2004-08-21 10:55
2004.09.05
Как поменять местами элементы в ListView?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский