Форум: "Базы";
Текущий архив: 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