Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder и базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
#1

Поиск. Ошибка Unknown column 'familia' in 'where clause' - C++ Builder БД

25.04.2013, 21:59. Просмотров 1864. Ответов 19
Метки нет (Все метки)

Доброго времени суток, помогите решить следующую проблему
Захотел сделать кнопку поиска по базе, сначала создал таблицы в sql и объеденил их,но при нажатии на кнопку поиска
вылетают ошибка Unknown column 'familia' in 'where clause'
а вот код обработчика
C++
1
2
3
4
5
6
7
8
void TForm1::search(TADOQuery * Query, TADOTable * Table,AnsiString Comb, AnsiString Edit)
{
        Query->Close();
        Query->SQL->Clear();
        Query->SQL->Add("SELECT * FROM " + Table->TableName + " WHERE " + Comb + " LIKE " + "'%" + Edit + "%'");
        Query->ExecSQL();
        Query->Open();
}
А вот sql запрос
SQL
1
SELECT Фамилия,Имя,Отчество,Оформлена FROM clients,visa  WHERE clients.`id_client`=visa.`id_visa`

http://www.cyberforum.ru/cpp-builder-database/thread1449417.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 21:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск. Ошибка Unknown column 'familia' in 'where clause' (C++ Builder БД):

Ошибка Unknown column 'jea.catid' in 'on clause'
Добрый день ув. пользователи! Подскажите пожалуйста, как правильно сделать, не...

Ошибка буквах есть а при цифрах все работает Unknown column 'eforie' in 'where clause'
Здравствуйте объясните плиз почему этот код выполняться когда ввожу цифры а...

Выводится ошибка mysql_fetch_array() expects parameter 1 to be resource, либо Unknown column 'значение переменной $prname' in WHERE clause
Здравствуйте! Прошу помочь, перерыл много чего, решения нет. Имеется...

Unknown column '' in 'where clause'
Прошу, скажите что не так))? <? $update_sql = ("UPDATE table1 SET...

Unknown column 'eforie' in 'where clause'
upd: Название темы должно было быть Unknown column 'IMG_1900.JPG' in 'where...

19
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.04.2013, 02:29 #2
mexx-nikitin, MySQL?


Цитата Сообщение от mexx-nikitin Посмотреть сообщение
вылетают ошибка Unknown column 'familia' in 'where clause'
Так Вы уверены, что у вас в самой БД есть поле с именем "familia"? Быть может все-таки там поле "Фамилия"?
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 10:52  [ТС] #3
я писал базу на MySQl,такое поле точно существует

Добавлено через 6 минут
исправил на Фамилия, но ошибка таже
0
Sasha
4918 / 2383 / 529
Регистрация: 05.06.2008
Сообщений: 7,465
Записей в блоге: 3
26.04.2013, 14:45 #4
Цитата Сообщение от mexx-nikitin Посмотреть сообщение
Query->SQL->Add("SELECT * FROM " + Table->TableName + " WHERE " + Comb + " LIKE " + "'%" + Edit + "%'");
Query->ExecSQL();
Query->Open();
А как это с селектом используешь ExecSQL()?
1
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 17:24  [ТС] #5
А как это с селектом используешь ExecSQL()?
Согласен это не надо использовать
Я так понимаю что надо изменить эту строчку Query->SQL->Add("SELECT * FROM " + Table->TableName + " WHERE " + Comb + " LIKE " + "'%" + Edit + "%'"); чтобы произошёл поиск по объединённым таблицам, подскажите какой она примет вид
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.04.2013, 18:42 #6
mexx-nikitin,
C++
1
2
3
4
5
6
7
8
9
void TForm1::search(TADOQuery * Query, TADOTable * Table,AnsiString Comb, AnsiString Edit)
{
        String sql = "SELECT * FROM " + Table->TableName + " WHERE " + Comb + " LIKE " + "'%" + Edit + "%'";
        ShowMessage(sql);        
        Query->Close();
        Query->SQL->Clear();
        Query->SQL->Add(sql);
        Query->Open();
}
То, что выдаст ShowMessage, попробуйте выполнить непосредственно через MySQL.
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 18:56  [ТС] #7
ShowMessage мне выдал такое SELECT *FROM visa WHERE Фамилия LIKE '%иванова%';пробил это в Mysql пишет Unknown column 'Фамилия' in 'where clause'
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.04.2013, 19:12 #8
mexx-nikitin, так, а что возвращает MySQL вот на такое:
MySQL
1
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'visa';
?
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 19:21  [ТС] #9
Воть такое
0
Миниатюры
Поиск. Ошибка Unknown column 'familia' in 'where clause'  
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.04.2013, 19:28 #10
mexx-nikitin, ну-с? Где среди названия полей Вы там наблюдаете "familia" или "Фамилия"?
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 19:30  [ТС] #11
The_Immortal, дык я ж запросом их связывал. Воть этим
SQL
1
 SELECT Фамилия,Имя,Отчество,Оформлена FROM clients,visa  WHERE clients.`id_client`=visa.`id_visa`
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.04.2013, 19:38 #12
mexx-nikitin, так а где результат данного запроса хранится-то?
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 19:42  [ТС] #13
Я его поместил в ADOQuery->SQL
0
Tim979
45 / 37 / 9
Регистрация: 26.04.2013
Сообщений: 89
26.04.2013, 21:02 #14
то что вы поместили запрос на объединение в ADOQuery это хорошо, но не достаточно. Попробуйте создать вьюху
SQL
1
2
CREATE OR REPLACE VIEW блаблабла AS 
SELECT Фамилия,Имя,Отчество,Оформлена FROM clients,visa  WHERE clients.`id_client`=visa.`id_visa`
Эта вьюха хранится непосредственно в базе, а дальше работать с ней как с таблицей с именем блаблабла
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.04.2013, 21:05 #15
mexx-nikitin, честно говоря, не могу понять чего Вы в итоге хотите получить

C++
1
2
3
4
5
6
7
8
void TForm1::search(AnsiString Comb, AnsiString Edit)
{
        String sql = "SELECT Фамилия,Имя,Отчество,Оформлена FROM clients,visa WHERE clients.id_clients = visa.id_visa AND " + Comb + " LIKE " + "'%" + Edit + "%'";     
        Query->Close();
        Query->SQL->Clear();
        Query->SQL->Add(sql);
        Query->Open();
}
Поясните, зачем там происходит выбор таблицы?
1
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 21:38  [ТС] #16
Фух... теперь после

SQL
1
2
CREATE OR REPLACE VIEW блаблабла AS 
SELECT Фамилия,Имя,Отчество,Оформлена FROM clients,visa  WHERE clients.`id_client`=visa.`id_visa`
ищет теперь,но теперь появилась новая ошибка при добавлении в неё новых значений появляется следующие cannot modify more than one base table through a join view 'travel_agency.cv'
0
Tim979
45 / 37 / 9
Регистрация: 26.04.2013
Сообщений: 89
26.04.2013, 21:43 #17
Представление (VIEW) — объект базы данных, являющийся результатом выполнения запроса к базе данных, определенного с помощью оператора SELECT, в момент обращения к представлению.

Представления иногда называют «виртуальными таблицами». Такое название связано с тем, что представление доступно для пользователя как таблица, но само оно не содержит данных, а извлекает их из таблиц в момент обращения к нему. Если данные изменены в базовой таблице, то пользователь получит актуальные данные при обращении к представлению, использующему данную таблицу; кэширования результатов выборки из таблицы при работе представлений не производится. При этом, механизм кэширования запросов (query cache) работает на уровне запросов пользователя безотносительно к тому, обращается ли пользователь к таблицам или представлениям.

Представления могут основываться как на таблицах, так и на других представлениях, т.е. могут быть вложенными (до 32 уровней вложенности).

Если есть необходимость добавлять инфу, то ее надо добавлять в таблицы, а с вьюхой можно работать только на просмотр (обновление, удаление не прокатит)
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 22:00  [ТС] #18
А вообще есть ли такой способ,чтобы работая с двумя и более объединёнными таблицами можно было их редактировать и осуществлять поиск по ним?
0
Tim979
45 / 37 / 9
Регистрация: 26.04.2013
Сообщений: 89
26.04.2013, 22:14 #19
упрощенно (в данном случае) можно считать, что в базе хранятся 2 таблицы с данными и одна вьюха (по поводу того, что такое вьюха я вкратце написал выше) поиск и объединение с ними можно осуществлять как угодно, но добавление, удаление и модификация это удел только таблиц(2 в данном случае). Так что редактируем таблицы, а просматривать, что на редактировали можем через вьюхи.
0
mexx-nikitin
79 / 79 / 8
Регистрация: 28.03.2010
Сообщений: 306
26.04.2013, 22:21  [ТС] #20
Спасибо всем кто помагал, вроде разобрался))
0
26.04.2013, 22:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 22:21
Привет! Вот еще темы с решениями:

#1054 - Unknown column 'X' in 'on clause'
Объясните пожалуйста, как правильно сделать последний джоин? SELECT ...

Unknown column 'Artmal' in 'where clause'
Вроде пишу запрос точно таким же образом, как это делают в документации к...

Unknown column 'email' in 'where clause'
Здравствуйте! Не могу понять по чему выдает вот такую ошибку, когда кавычки...

Unknown column 'cpr160206133' in 'where clause'
Есть поисковая форма <?php // Данные для mysql сервера $dbhost =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru