![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как организовать запрос? [D5, Paradox]
td © (2005-02-07 18:39:00)Очень нужны идеи! Голову сломал, как лучше организовать
Есть база данных "Словарь" (довольно объемная).
Основных 2 таблицы - со словарями и с терминами.
В таблице терминов
такие поля:
ID I идентификатор
SL_ID I код для связи со словарем
Name A сам термин
Def1 M определение1
From1 A источник1
Def2 M (еще иногда второе и третье определения бывают)
From2 A
Def3 M
From3 A
Теперь выяснилось, что в таблице терминов слова повторяются - их для разных словарей каждый раз забивали (с отличающимися определениями)
Два приложения - для ведения и для просмотра. Требуют сделать так, чтобы в варианте для просмотра в общем списке (куда попадают термины всех словарей) сделать так, чтобы не было дублей.
По-простому сделать запрос с DISTINCT не получается. Потому что иначе уже не сформировать список по одному словарю - коды для словарей разные (+ поиск по все базе по названию и определению). А остальное дико сложное в голову приходит.
Помогите, пожалуйста!
Danilka (2005-02-08 09:20:00) [1][3] ЮЮ © (08.02.05 03:50)
> А лучше пересмотреть структуру
Угу. Т.к. первый твой вариант довольно медленный, а с учетом того, что: " база данных "Словарь" (довольно объемная)" это не есть хорошо.
ЮЮ (2005-02-08 03:50:00) [2]SELECT Name, COUNT(DISTINCT SL_ID) Cnt, MIN(Id) FistId
GROUP BY Name
Данный запрос вернёт всю необходимую информацию о термине:
если Cnt = 1, то термин встречается один раз и индекс этой записи FistId, если больше, то все термины отбираеи запросом
SELECT * WHERE Name = :Name
А лучше пересмотреть структуру, ибо отношение словарь - термин должно быть N к M, а не 1 к N
td (2005-02-07 19:35:00) [3]
> msguns © (07.02.05 18:50) [1]
А как же тогда выкрутиться, что в разных словарях определения для терминов не совпадают?
т.е. пользователи хотят, чтобы в приложении для просмотра был единый список без дублей, но когда термин открываешь - была информация для каждого словаря - т.е. расписано, в каком словаре что значит слово.
msguns (2005-02-07 18:50:00) [4]Почему нельзя сделать единый список терминов (через врем.транспорт-таблицу), а потом с его помощью перекодировать все ссылки на него из справочников. После чего очистить словаь терминов, залить в него инфу из транспорт-таблицы, а саму таблицу удалить ?
Ну и, конечно, надо переписать логику добавления в словарь терминов. В словаре терминов на поле текста наложить условие уникальности (создать индекс)