(Примечание. Этот вопрос перекрестно опубликован с ServerFault .)
Мне нужно выполнить поиск текста оракула по нескольким таблицам в моей базе данных Oracle 10g.Таблицы имеют следующие структуры:
Table1 (ID, col1, col2, ...)
SubTable1 (ID, Table1ID, col1, col2, ...)
SubTable2 (ID, Table1ID, col1, col2, ...)
Таблица 1 имеет отношения «один к одному» как с SubTable1, так и с Subtable 2.
Во время выполнения клиентское приложение предоставит условия поиска для поиска по всемтри таблицы.Только записи из одной из таблиц, которые содержат условия поиска, должны быть объединены и возвращены клиентскому приложению.
Сценарий (упрощенный пример)
Если запись в таблице Table1 содержит 10 записей вSubTable1, но только 4 из 10 содержат условия поиска, только 4 строки должны быть возвращены клиентскому приложению.То же самое относится и к SubTable2.
Вопрос
Есть ли способ сделать это с минимальными изменениями, в идеале только с одним contains
поиском по всем таблицам?Или мне действительно нужно указать один contains
для каждой таблицы?
Дополнительное примечание
- Я следовал за этим и пытался создать фиктивный столбец индекса текста вТаблица1 с предпочтением
User_Datastore
.Хранимая процедура используется для извлечения и форматирования всех связанных данных из всех таблиц в формате XML.Это не работает, потому что все 10 записей в SubTable1 (указано в сценарии) будут возвращены вместо.Строка в таблице 1 соответствует поисковому запросу, а затем объединяется со всеми 10 строками в Subtable1.