Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2010, 18:45   #1
alexeybest
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 17
По умолчанию Запрос на поиск в таблице Ado

Здравствуйте уважаемые форумчане.

Есть 2 таблицы, в 1ой есть одно поле ФИО, где Фио например (Иванов,Иван,Иванович)
и есть таблица 2, где есть 3поля, (фамилия, имя, отчество).
Мне нужно в DbGrid вывести с помощью ADoQuery те строки во 2ой таблице, где поля фамилия, имя,
отчество совпадают с полем ФИО из 1ой таблицы,

Пример
1 таблица 2 таблица

ФИО | Фамилия | Имя |Отчество
Иванов, Иван, Иванович | Иванов | Иван | Иванович

Чтобы результат в Гриде выводился как
Фамилия | Имя | Отчество
Иванов | Иван | Иванович

т.е. те поля где нашлись совпадения.

Вот мой пример кода:

[DELPHI]
ADOQuery2.SQL.Add('Select * from Таблица1');
ADOQuery2.SQL.Add('where (fam like (select ФИО from Таблица2))
and (name like (select ФИО from Таблица2))
and (otc like (select ФИО from Таблица2));
[/DELPHI]
alexeybest вне форума Ответить с цитированием
Старый 16.03.2010, 20:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

запрос неверный..

я бы предложил копнуть в сторону
Код:
select * from Таблица1 t1, Таблица2 t2
  where t1.Fam+' '+t1.name+t1.otc = t2.ФИО;
ну и неплохо было бы перевести всё в один регистр (например, верхний) + убрать лишние пробелы из t2.ФИО


p.s. А что за СУБД?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2010, 20:16   #3
alexeybest
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
запрос неверный..

я бы предложил копнуть в сторону
Код:
select * from Таблица1 t1, Таблица2 t2
  where t1.Fam+' '+t1.name+t1.otc = t2.ФИО;
ну и неплохо было бы перевести всё в один регистр (например, верхний) + убрать лишние пробелы из t2.ФИО


p.s. А что за СУБД?..
Access.

Код:
ADOQuery2.SQL.Add(' Select * from Таблица1 t1, Таблица2 t2 where (t1.Fam+' '+t1.name+t1.otc = t2.ФИО ) ');
выдает ошибку missing operator or semicolon(

исправил ошибку но все равно не ищет

Последний раз редактировалось alexeybest; 16.03.2010 в 20:21.
alexeybest вне форума Ответить с цитированием
Старый 16.03.2010, 20:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

выберите из таблицы1 поле ФИО
посмотрите, так же фамилия имя и отчество разделены запятыми!
при этом посмотрите, если пробелы после запятой
и попробуйте так:
Код:
ADOQuery2.SQL.Add('Select t2.* from Таблица1 t1, Таблица2 t2 where (t2.Fam+'', ''+t2.name+'', ''+ t2.otc = t1.ФИО) ');
если не поможет, сделайте тестовую БД, с десятком/другим фамилий (таблица1 и таблица2) и выложите сюда. так легче будет Вам помочь.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2010, 20:35   #5
alexeybest
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 17
По умолчанию

пишет что t2*.Fam не имеет значения по умолчанию(
а в базе слова пробелами разделены

Вот изменил

ADOQuery2.SQL.Add('Select * from Таблица1 t1, Таблица2 t2 where (t1.fam+'' ''+t1.name+'' ''+ t1.otc = t2.ФИО) ');

т.к. в таблице 1 содержатся эти поля

но выдает пустой запрос(

Последний раз редактировалось alexeybest; 16.03.2010 в 20:48.
alexeybest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое обновление таблице через запрос sql eda Microsoft Office Excel 8 19.04.2011 12:47
Записи в таблице ADO doniyor БД в Delphi 5 01.07.2009 13:19
Поиск в Ado Table dani92 БД в Delphi 5 16.04.2009 16:21
ADO. Запрос на добавление. Ошибка. Son БД в Delphi 13 09.01.2009 20:15
ADO поставить метку в таблице... Roof БД в Delphi 5 16.08.2008 15:58