Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глючит Select ПОМОГИТЕ ПЛИЗЗЗ!!! [dBase, FoxPro, Paradox]


demon_god ©   (2004-01-05 14:17:00) 

Заранее извиняюсь за все глупости, что здес напишу, т.к. я только начинающий, однако надо очень и срочно, а ответа я не могу найти еще с прошлого года (полторы недели уже) :).

Итак, есть две таблицы paradox или dbase (и то и то пробовал). В каждой по три поля: Word - поле с данными, id1 и id2 - поля, в которых для первой таблицы id1 - номер строки записей в порядке их добавления (короче прост по порядку), id2 - номер строки из поля id2 для второй таблицы, которая джолжна соответствовать этой строке.
Во второй таблице все. естественно, наоборот (не самая лучшая организация и всеже...).

Задача простая - для одной из таблиц дается ключ, который ищется в ее поле Word и затем выбираются и возвращаются сопоставленные ему ключи из второй таблицы.

Я разместил на форме Query, DataSource и Database, прописал в последнем в свойстве Params PATH на локальную папку base в папке проекта и выбираю данные с помошью sql-запросов типа

select word from t1 where (id2=(select id2 from t2 where word ="МОЙ КЛЮЧ")) or (id1=(select id1 from t2 where word ="МОЙ КЛЮЧ"));

Такая OR-конструкция нужна для случая, когда мой ключ один из нескольких возможных (например когда я задаю key1t1 и должен получить keyNt2, но последнему сопоставлен не только key1t1, но и key2t1,key3t1).

Так вот, все это прекрасно работает кроме одного случая - когда ключем является что-то типа "еблматититьblin", не содержащееся ни в одной из таблиц. Тогда в качестве результата выдается не пустое значение, а какое-то произвольное (1-я, 8-я или любая другая запись). Почему так? И как с этм ороться?

Приношу всем извинения за все написанные глупости - я человек совсем начинающий, однако надо очень и срочно - с прошлого года ( :) ) найти ответа не могу.

Буду признателен также, если кто подскажет, где взять инфу по поводу приложений для локальных БД.

Всем заранее спасибо.


Desdechado   (2004-01-05 14:26:00) [1]

здесь не по локальным БД надо, а книжку по БД вообще почитать.
когда надо сопоставить 2 вида сущностей друг с другом (много-ко-многим) обычно используют 3 таблицы:
1. справочник первых сущностей (id1, название, проч. атрибуты)
2. справочник вторых сущностей (id2, название, проч. атрибуты)
3. таблица перекрестных ссылок - связей одних с другими (id1, id2)
тогда все select"ы строятся легко, нет дублирования данных и проч.
Так что, почитайте книжки, коллега. Особенно про нормализацию данных.


Наверх

Титульная страница Поиск, карта сайта Написать письмо