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

Вниз

как организовать запрос?   Найти похожие ветки 

 
td   (2005-02-07 18:39) [0]

Очень нужны идеи! Голову сломал, как лучше организовать

Есть база данных "Словарь" (довольно объемная).
Основных 2 таблицы - со словарями и с терминами.

В таблице терминов
такие поля:
ID  I идентификатор
SL_ID  I код для связи со словарем
Name  A сам термин
Def1  M определение1
From1  A источник1
Def2  M (еще иногда второе и третье определения бывают)
From2  A
Def3  M
From3  A

Теперь выяснилось, что в таблице терминов слова повторяются - их для разных словарей каждый раз забивали (с отличающимися определениями)

Два приложения - для ведения и для просмотра. Требуют сделать так, чтобы в варианте для просмотра в общем списке (куда попадают термины всех словарей) сделать так, чтобы не было дублей.

По-простому сделать запрос с DISTINCT не получается. Потому что иначе уже не сформировать список по одному словарю - коды для словарей разные (+ поиск по все базе по названию и определению). А остальное дико сложное в голову приходит.

Помогите, пожалуйста!


 
msguns ©   (2005-02-07 18:50) [1]

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


 
td   (2005-02-07 19:35) [2]


> msguns ©   (07.02.05 18:50) [1]


А как же тогда выкрутиться, что в разных словарях определения для терминов не совпадают?

т.е. пользователи хотят, чтобы в приложении для просмотра был единый список без дублей, но когда термин открываешь - была информация для каждого словаря - т.е. расписано, в каком словаре что значит слово.


 
ЮЮ ©   (2005-02-08 03:50) [3]

SELECT Name, COUNT(DISTINCT SL_ID) Cnt, MIN(Id) FistId
GROUP BY Name

Данный запрос вернёт всю необходимую информацию о термине:
если Cnt = 1, то термин встречается один раз и индекс этой записи FistId, если больше, то все термины отбираеи запросом

SELECT * WHERE Name = :Name

А лучше пересмотреть структуру, ибо отношение словарь - термин  должно быть N к M, а не 1 к N


 
Danilka ©   (2005-02-08 09:20) [4]

[3] ЮЮ ©   (08.02.05 03:50)
> А лучше пересмотреть структуру

Угу. Т.к. первый твой вариант довольно медленный, а с учетом того, что: "база данных "Словарь" (довольно объемная)" это не есть хорошо.



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
3-1107286457
3APA3A
2005-02-01 22:34
2005.03.06
Узнать версию FB с клиента...


14-1107966063
Nic87
2005-02-09 19:21
2005.03.06
Новый дизайн сайта. Нужна конструктивная критика.


14-1108508124
GanibalLector
2005-02-16 01:55
2005.03.06
Дайджесты форумов


1-1108812295
Михаил_
2005-02-19 14:24
2005.03.06
Подскажите, где можно найти описание реальных имен функций Win AP


14-1108002944
Думкин
2005-02-10 05:35
2005.03.06
С Днем рождения! 10 февраля