Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

"Сквозной" поиск   Найти похожие ветки 

 
Tronado   (2007-11-28 10:22) [0]

Народ подскажите плиз как можно организовать сквозной поиск, т.е. имеем порядка 10 таблиц Access, в какой-то из таблиц лежат нужные данные. Как "просмотреть" поиском все таблицы? Данные удовлетворяющие запросу могут быть в нескольеих таблицах. Такое впринципе возможно?


 
Andrey ©   (2007-11-28 10:25) [1]

Ага.
select поле from таблица1 where поле like "%значение%"
select поле from таблица2 where поле like "%значение%"
...
select поле from таблицаN where поле like "%значение%"

Больше денормализации - больше запросов )


 
Sergey13 ©   (2007-11-28 10:26) [2]

> [0] Tronado   (28.11.07 10:22)
> Данные удовлетворяющие запросу могут быть в нескольеих таблицах.

Ну так и ищи в этих таблицах. К тому же наверное данные надо искать в определенных полях, а не во всех?


 
Tronado   (2007-11-28 10:28) [3]

Sergey13 ©   (28.11.07 10:26) [2]

Да не во всех. По отдельности поиск не представляет трудности, т.е. если искать в каждой таблице. Как потом вывести результат и отобразить в гриде?


 
Tronado   (2007-11-28 10:34) [4]

Грубо говоря нужно следующее:

Допустим к примеру есть 3 таблицы, ищем по полю FIO (фамиля имя отчество). В первой таблице есть Иванов Андрей Михалович, во второй Иванченко Галина Сергеевна, в третьей Ивченков Валентин Геннадьевич

В строке запроса пишу "Ив" и в итоге мне надо получить результирующий набор данных из всех трех таблиц с вышеперечисленными ФИО. Остальные записи считаем что не удовлетворяют условию.


 
Andrey ©   (2007-11-28 10:36) [5]

delete from временная таблица;
insert into временная таблица (поле)
select поле from таблица1 where поле like "%значение%";
insert into временная таблица (поле)
select поле from таблица2 where поле like "%значение%";
...
insert into временная таблица (поле)
select поле from таблицаN where поле like "%значение%";

select поле from временная таблица;


 
Slym ©   (2007-11-28 10:37) [6]

SELECT Brands.Name as FldName
FROM Brands
UNION
SELECT Categories.Name as FldName
FROM  Categories


 
Tronado   (2007-11-28 10:40) [7]

А если так: SELECT Таблица1.FIO FROM Таблица1, Таблица2, Таблица3 WHERE WHERE Таблица1.FIO=Таблица2.FIO AND Таблица1.FIO==Таблица3.FIO

Муть какую то написал наверно :)


 
Tronado   (2007-11-28 10:40) [8]

WHERE одно конечно :)


 
Tronado   (2007-11-28 10:41) [9]

Andrey ©   (28.11.07 10:36) [5]

А без временных таблиц можно обойтись?


 
Труп Васи Доброго(заб. пароль)   (2007-11-28 10:41) [10]

Нормализуй данные и отпадёт надобность в таких действиях. Если лень нормализовать , то вариант
> Andrey ©   (28.11.07 10:36) [5]

вполне подойдёт.
Но лучше нормализуй.


 
Andrey ©   (2007-11-28 10:44) [11]

>Tronado   (28.11.07 10:41) [9]
Можно, у Slym ©   (28.11.07 10:37) [6] написано как. Тока там типы полей из пердложения select должны совпадать во всех элементах union-а. Да и монстроидальный может запрос получиться (если таблиц для поиска больше 10 скажем)... но для аксеса простительно )


 
Slym ©   (2007-11-28 10:52) [12]

SELECT Name1 as FldName
FROM Brands
WHERE Name1 LIKE "%значение%"
UNION
SELECT Name2 as FldName
FROM  Categories
WHERE Name2 LIKE "%значение%"

или
SELECT FldName
FROM
 (SELECT Name1 as FldName
 FROM Brands
 UNION
 SELECT Name2 as FldName
 FROM  Categories)
WHERE FldName LIKE "%значение%"


 
Andrey ©   (2007-11-28 11:31) [13]

>Slym ©   (28.11.07 10:52) [12]
С точки зрения производительности, ИМХО, лучше первый вариант. Т.к. далеко не все оптимизаторы смогут раскурить такую связку и использовать условие для элементов подзапроса.


 
Anatoly Podgoretsky ©   (2007-11-28 12:11) [14]


> Муть какую то написал наверно :)

Одназначно.
Нормальные решения у Slym, остальные не отвечают условиям задачи.


 
Andrey ©   (2007-11-28 12:29) [15]

>Anatoly Podgoretsky ©   (28.11.07 12:11) [14]
>остальные не отвечают условиям задачи.
Правда? Жаль.


 
Anatoly Podgoretsky ©   (2007-11-28 16:18) [16]

> Andrey  (28.11.2007 12:29:15)  [15]

Да нечего жалеть, SELECT + UNION самое то для задачи, а оптимальность здесь не возможна по определению.



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
2-1206517342
kyn66
2008-03-26 10:42
2008.04.20
Корректный Mini_Archiver


2-1206704256
asdf2
2008-03-28 14:37
2008.04.20
Как вставить Blob-поле(текстовое) в InterBase?


15-1204899711
Kolan
2008-03-07 17:21
2008.04.20
Чем же все таки работать с базами SQLite?


11-1187883874
Vladimir Kladov
2007-08-23 19:44
2008.04.20
Объявление: новый модуль DecimalCalculations


2-1206598873
zdm
2008-03-27 09:21
2008.04.20
Отслеживание исполнения