Главная страница
    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.45 MB
Время: 0.041 c
11-1090485751
Ajax
2004-07-22 12:42
2005.03.06
coOwnerDrawFixed и размер ComboBox


6-1103348192
Atomic2004
2004-12-18 08:36
2005.03.06
MailSlot


1-1108652887
Георгий Бедный
2005-02-17 18:08
2005.03.06
Легенда о калькуляторе


14-1108101125
BoxTer
2005-02-11 08:52
2005.03.06
Исходники Windows 98


9-1101904980
VolanD666
2004-12-01 15:43
2005.03.06
Корявая прорисовка (Direct3D)





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