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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 11:38   #1
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию Ошибка в запросе к БД Access

Код:
select 
 tech.id_tech,
 tech.inv_num,
 tech.name_1,
 tech.room,
 tech.owner,
 tech.office,
 tech.type,
 personal.id_per,
 office.id_office,
 tech_type.id_type
 from tech 
 left outer join personal on(personal.id_per = tech.owner) 
 left outer join office on(office.id_office = tech.office) 
 left outer join  tech_type on(tech.type.id_tech_type = tech.type)
Вообщем вот код запроса, ругается он именно на последние 3 строчки, что неправильный синтаксис(пропущен оператор). Мне кажется я всегда именно так писал подобные запросы
Tanzor69 вне форума Ответить с цитированием
Старый 16.04.2013, 11:57   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Меня смущает только tech.type , должно же быть tech_type
На всякий можно ещё и outer поубирать - он опциональный вроде как, а как там в аксессе с подобным - не знаю.
phomm вне форума Ответить с цитированием
Старый 16.04.2013, 12:41   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Код:
left outer join  tech_type on(tech.type.id_tech_type = tech.type)
обрати внимание - 2 точки в одной пременной .
и да, outer можно убрать
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 17.04.2013, 09:07   #4
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

спасибо, но как я и думал ошибка не в этом. не нравится ему синтаксис, чтоб его. подправил как вы советовали, вот что получилось:

Код:
select 
 tech.id_tech,
 tech.inv_num,
 tech.name_1,
 tech.room,
 tech.owner,
 tech.office,
 tech.type,
 personal.id_per,
 office.id_office,
 tech_type.id_type
 from tech 
 left join personal on(personal.id_per = tech.owner) 
 left join office on(office.id_office = tech.office) 
 left join  tech_type on(tech_type.id_type = tech.type)
Всё равно не работает. Как я понял из ошибки, не нравится именно место после первой скобки и вторым словом left, типо там какйо то знак еще должен быть
Tanzor69 вне форума Ответить с цитированием
Старый 17.04.2013, 09:25   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
select 
 tech.id_tech,
 tech.inv_num,
 tech.name_1,
 tech.room,
 tech.owner,
 tech.office,
 tech.type,
 personal.id_per,
 office.id_office,
 tech_type.id_type
 from ((tech 
 left join personal on personal.id_per = tech.owner)
 left join office on office.id_office = tech.office) 
 left join  tech_type on tech_type.id_type = tech.type
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.04.2013, 09:47   #6
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

спасибо большое, заработало!

просто первый раз для access'a пишу запросы, всегда работал с firebird

Блин, изначально немного неправильно сформировал запрос, мне надо к главной таблице не id из других таблиц, а имена, т.е. вот так:

Код:
select 
 tech.id_tech,
 tech.inv_num,
 tech.name_1,
 tech.room,
 tech.owner,
 tech.office,
 tech.type,
 personal.name_personal,
 office.name_office,
 tech_type.name_type
 from ((tech 
 left join personal on personal.id_per = tech.owner)
 left join office on office.id_office = tech.office) 
 left join  tech_type on tech_type.id_type = tech.type
И почему то когда я так изменил - ничего не работает. Пишет, что поле id_per не найдено. Что за брееед?

А вот так заработало, правда в результате у меня в гриде 100500 не нужных стобцов, хотя сделать их невидимыми удалось и впринципе проблема решена

Код:
select 
 tech.id_tech,
 tech.inv_num,
 tech.name_1,
 tech.room,
 tech.owner,
 tech.office,
 tech.type,
 personal.name_personal,
 office.name_office,
 tech_type.name_type,
 personal.id_per,
 office.id_office,
 tech_type.id_type
 from ((tech 
 left join personal on personal.id_per = tech.owner)
 left join office on office.id_office = tech.office) 
 left join tech_type on tech_type.id_type = tech.type
Но всё же хотелось бы знать, там в чем то ошибка или это особенности Accessa?

Последний раз редактировалось Stilet; 17.04.2013 в 10:21.
Tanzor69 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в запросе Ardarik БД в Delphi 7 04.03.2013 15:05
Условия отбора в запросе Access LexxSakhalin Microsoft Office Access 0 01.03.2012 08:39
Ошибка в запросе LIKE Ele БД в Delphi 2 22.05.2010 13:07
Ошибка в запросе к БД Access Vit@L БД в Delphi 8 26.09.2009 18:22