Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 2 Join-а в Query, не проходит запрос в IDE 
:(
    Опции темы
eXcoder
Дата 1.3.2006, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



День добрый. Работаю через ADO с DBF'ами.
Объединяю 3 таблицы.

Пишу в ADOQuery.SQL :

Код

SELECT DISTINCT arc_acc.TNUM, arc_acc.SUM
FROM arc_acc
LEFT OUTER JOIN cardspri ON arc_acc.TNUM = cardspri.TNUM
LEFT OUTER JOIN Licschet ON Licschet.xFIO = (cardspri.FAM+" "+cardspri.NAME+" "+cardspri.PATR)
WHERE (arc_acc.CPERIOD='2005.12') AND ((arc_acc.INOUT='306') OR (arc_acc.INOUT='307'))
ORDER BY arc_acc.TNUM


в SQL Suery Analyzer от SQL SERVER 2000
все проходит на ура.

IDE говорит, что:
"
Ошибка синтаксиса (пропущен оператор) в выражении запроса 'arc_acc.TNUM = cardspri.TNUM
LEFT OUTER JOIN Licschet ON Licschet.xFIO = (cardspri.FAM+" "+cardspri.NAME+" "+cardspri.PATR)'

"

Как выйти из ситуации?

Это сообщение отредактировал(а) eXcoder - 1.3.2006, 06:04
PM MAIL   Вверх
SergeBS
Дата 1.3.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

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



Апострофы посмотри - в Delphi надо удваивать, т.е.
SQL
select * where a = 'blabla-bla' and b = 1

В IDE:
var
s : string;

s := 'select * where a = ''blabla-bla'' and b = 1';
И так же - в Query и т.п.

PM MAIL   Вверх
CaNIBaLchik
Дата 1.3.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 8.2.2006
Где: Томск

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



join -ы они вообще раздувают кортежы, любои join можно заменить and - ом
PM MAIL ICQ   Вверх
eXcoder
Дата 1.3.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(CaNIBaLchik @ 1.3.2006, 11:55 Найти цитируемый пост)
join -ы они вообще раздувают кортежы, любои join можно заменить and - ом


Можешь показать на моем запросе как вместо JOIN юзать AND ? smile

PM MAIL   Вверх
SergeBS
Дата 1.3.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

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



CaNIBaLchik,
Цитата

join -ы они вообще раздувают кортежы, любои join можно заменить and - ом

Шутник.

eXcoder,
Вдогонку:
ParamCheck -> false
Prepared -> false
PM MAIL   Вверх
ТоляМБА
Дата 3.3.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Была у меня похожая проблема – 3 таблицы и два джоина. Не знаю поможет в твоем случае или нет, но всё же.
Есть у меня в MS-SQL Server три таблицы:

Liter, LiterLang, Landg
LiterID,----------LiterID, LangName
LiterName, LangID,----------------LangID

Надеюсь так структура понятна.

Был запрос:

Код

SELECT Landg.LangName, Liter.LiterName
FROM  LiterLang INNER JOIN
Liter ON LiterLang.LiterID = Liter.LiterID INNER JOIN
Landg ON LiterLang.LangID = Landg.LangID


Прокатывал на ура.
Импортнул в dBase IV. В Делфях ошибка:

Ошибка синтаксиса (пропущен оператор) в выражении запроса 'LiterLang.LiterID = Liter.LiterID INNER JOIN
Landg ON LiterLang.LangID = Landg.LangID'

Мои действия:
1. Создал пустую базу Access
2. Импортнул в нее все таблы
3. Вставил в неё этот же запрос – оппа, тоже самое сообщение об ошибке. Ну, думаю, а какже акцесс-то связывает свои таблы? Захожу в схему данных и создаю связи (см. выше) перед этим поставив ключевые поля в Liter и в Lang. Захожу в запросы «Создание запроса в режиме конструктора», добавляю все три таблы – все связи сразу показались, помечаю соотв. поля на вывод, жму на просмотр – выдает те же данные что и на MS-SQL Server! С замиранием жму на «Режим SQL» - вижу запрос:

Код

SELECT Landg.LangName, Liter.LiterName
FROM Liter INNER JOIN (Landg INNER JOIN LiterLang ON Landg.LangID = LiterLang.LangID) ON Liter.LiterID = LiterLang.LiterID;


Цепляю его, ложу в ADOQuery1. Открываю – всё работает.

PM   Вверх
Vit
Дата 3.3.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Заменить двойные кавычки на одинарные, но удвоенные


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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