Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полнотекстовый поиск своими руками 
V
    Опции темы
tishaishii
Дата 6.9.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Таблицы:
    FIRM(ID_FIRM, TITLE, JURE)  -- собственно, таблица с данными
    FT_FIRM_WORD(ID_FIRM, WORD) -- заполняется автоматически при заполнении таблицы FIRM
    FT_FIRM_QUERY(ID_FIRM_QUERY, WORD) -- слова из запроса пользователя (используется во время обработки запроса)

Нужно составить запрос, чтобы отобрать все записи в таблице FIRM, где все слова из FT_FIRM_QUERY содержатся в записях FT_FIRM_WORD соответствующей записи таблицы FIRM.

Составил запрос вроде:
Код

  select count(*) from ft_firm_query where id_firm_query=:id_ffq into :wc;
  select
      :id_fft,
      ffw.id_firm
  from
      firm as f

      inner join ft_firm_words as ffw on
      f.id_firm=ffw.id_firm

      inner join ft_firm_query as ffq on
      (ffw.word starts with ffq.word)
  where
      (ffq.id_session=:id_ffq)
  group by
      ffw.id_firm
  having
      count(*)>=:wc;


Но, тогда, по запросу, например, "ЗАВОД КИРПИЧ" будут выдаваться записи из FIRM и те, в которых слово "ЗАВОД" встречается 2 и более раз, а "КИРПИЧ" может не встречаться вовсе.
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 6.9.2010, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Придумал решение:
Код
select
        f.id_firm
    from
        firm as f

        inner join ft_firm_words as ffw on
        f.id_firm=ffw.id_firm

        inner join ft_firm_query as ffq on
        (ffw.word starting with ffq.word)
    where
        (ffq.id_session=100)
    group by
        f.id_firm
    having
        count(distinct ffq.word)>=:wc; -- :wc - количество слов (уникальных) в запросе

PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.