Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.036 c
2-1206218273
Igor23
2008-03-22 23:37
2008.04.20
онлайн игра


15-1204619181
@!!ex
2008-03-04 11:26
2008.04.20
Windows XP 32 + AMD 64 глюк


15-1204604949
Slider007
2008-03-04 07:29
2008.04.20
С днем рождения ! 4 марта 2008 вторник


15-1204929909
oxffff
2008-03-08 01:45
2008.04.20
Всех дам с 8 Марта поздравляем


3-1195294675
Neket
2007-11-17 13:17
2008.04.20
Расчет среднего значения.





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