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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.055 c
4-1106114857
CHES
2005-01-19 09:07
2005.03.06
Чтение com - порта и синхронизация потоков


1-1108623343
Innuendo
2005-02-17 09:55
2005.03.06
MDIChild Form


14-1108558723
Antonn
2005-02-16 15:58
2005.03.06
Возможные проблеммы с вызовом IPHLPAPI.DLL


1-1108523985
Wowa-K
2005-02-16 06:19
2005.03.06
Быстрая вставка данных в Word


1-1108993644
GanibalLector
2005-02-21 16:47
2005.03.06
List index out of bounds(1)





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