Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос SQL на BDE для access, Помогите правильно составить SQL запрос 
V
    Опции темы
Neytral
Дата 7.2.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



Здравствуйте!

Создал базу данных в access, организовал доступ через BDE TQeury (проверил для просмотра всех записей - работает)
Поля базы данных: name и age текстовое и числовое соответственно.
Задача: составить запрос поиска по именам, которые содержат подстроку str, а результатом должна быть таблица с одним текстовым столбцом объединяющим имя и возраст (т.е. name="Сидоров" age =20 получим res="Сидоров, 20 лет отроду")

Хочу использовать следующий запрос:
Код

SELECT name + ', ' + age + ' лет отроду' as result
FROM books
WHERE name CONTAINING str

Проблемы:
1 - перед объединением name с age необходимо переделать age в строку, как? (читал про CAST, CONVERT - указанный синтаксис в helpe для этих команд не работает или команды отсутсвуют, просто age.Asstring не проходит)
2 - name CONTAINING str - выдает: "ошибка синтаксиса (пропущен оператор)", может команды CONTAINING просто нет? (LIKE работает, но я не понял как задать для неё поиск подстроки по всей строке, пробовал типа '*str*')

Подскажите как решить эти две проблемы и где можно взять подробное описание синтаксиса команд SQL? 

P.S. Не подумайте только что как столкнулся с проблемой сразу полез спрашивать, дело в том что в тех help'ах, кот читал (включая и C:\Program Files\Common Files\Microsoft Shared\OFFICE11\1049\JETSQL40.CHM) либо синтаксис другой, либо подробно описаны самые простые функции, а сложные просто перечислены.
PM MAIL   Вверх
Deniz
Дата 7.2.2008, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Код

SELECT name + ', ' + CAST(age as varchar(2)) + ' лет отроду' as result
FROM books
WHERE name CONTAINING 'str'



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Neytral
Дата 7.2.2008, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



Да вот в этом всё и дело - при таком запросе в первой строке выдаёт "ошибка синтаксиса (пропущен оператор) пропущен оператор в выражении запроса", а если в первой строке убрать всё про age - то выдайт ту же ошибку для последней строки!
PM MAIL   Вверх
Frees
Дата 7.2.2008, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Код

SELECT NAME || ', ' || CAST(AGE AS VARCHAR(13)) || ' лет отроду' AS RESULT
FROM BOOKS
WHERE NAME LIKE '%str%'



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Neytral
Дата 7.2.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



ООО! Like '%str%' - то что надо, а в первой строке пишет что использование || там неприменимо, но я уже нашел решение c format.
Я понял проблему - у меня MySQL server версии старой, он просто не знал команд CAST, CONVERT, CONTAINING, || и др.

окончательно:
Код

ELECT name + ', ' + format(year) + ' лет отроду' as result
FROM books
WHERE name like '%str%'


спасибо всем кто отозвался
PM MAIL   Вверх
Deniz
Дата 8.2.2008, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(Neytral @  7.2.2008,  03:11 Найти цитируемый пост)
Создал базу данных в access, организовал доступ через BDE TQeury (проверил для просмотра всех записей - работает)

Цитата(Neytral @  8.2.2008,  00:58 Найти цитируемый пост)
Я понял проблему - у меня MySQL server версии старой

Ты что людям голову морочишь?
То у тебя Access, то вдруг MySQL появился.  smile 
Так можно и "-" в репутацию схлопотать. 
Читайте правила smile


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Neytral
Дата 8.2.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



))Извините, у меня действительно Access через BDE, а MySQL server ни при чем.
Я хотел написать про то что поддерживаемые запросы SQL наверное старые, раз help'aм не соответствуют.

P.S. Поправте меня если опять напутал

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1061 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.