Главная страница
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.47 MB
Время: 0.058 c
14-1107986515
GanibalLector
2005-02-10 01:01
2005.03.06
XML


3-1107767475
slla
2005-02-07 12:11
2005.03.06
Таблица +цвет


4-1106295756
Stanislav
2005-01-21 11:22
2005.03.06
Ответ на сообщение


1-1109016964
Vasek
2005-02-21 23:16
2005.03.06
Странное поведение ActionMainMenuBar


4-1106330368
K-19
2005-01-21 20:59
2005.03.06
Convert