|
Проблема с запросом в TecDoc | ☑ | ||
---|---|---|---|---|
0
u2006
30.01.15
✎
13:14
|
Доброго всем времени суток.
Есть задача вытащить некоторые данные из TecDoc Подключаюсь через ADODB.Connection Простые запросы отрабатывает на ура, а вот запрос когда необходимо обращаться к 1 таблице 2 или более раз не отрабатывает. Вот пример простого запроса, писал просто для теста SELECT TOF_MANUFACTURERS.MFA_ID, TOF_MANUFACTURERS. MFA_BRAND, TOF_MANUFACTURERS777.MFA_BRAND FROM TOF_MANUFACTURERS INNER JOIN TOF_MANUFACTURERS AS TOF_MANUFACTURERS777 ON TOF_MANUFACTURERS777.MFA_ID = TOF_MANUFACTURERS.MFA_ID Выдает следущее table or correlation name 'TOF_MANUFACTURERS' is not unique in block 1 Т.е я так понимаю не получается работать с 2 одинаковыми таблицами Может кто подскажет в чем проблема то может быть, понятно что руки кривые, но всётаки... премного благодарен |
|||
1
Ёпрст
30.01.15
✎
13:18
|
алиясы для первой таблицы задай
|
|||
2
u2006
30.01.15
✎
13:18
|
(1) Пробовал не помогает
|
|||
3
Ёпрст
30.01.15
✎
13:19
|
SELECT
table1.MFA_ID, table1. MFA_BRAND, table2.MFA_BRAND FROM TOF_MANUFACTURERS as table1 INNER JOIN TOF_MANUFACTURERS AS table2 ON table1.MFA_ID = table2.MFA_ID |
|||
4
Ёпрст
30.01.15
✎
13:20
|
(2)нам отсюда не видно, что пробывал и как оно
|
|||
5
u2006
30.01.15
✎
13:25
|
(4)Ну собственно такая ошибка на ваш запрос
Ошибка при вызове метода контекста (Execute) Recordset = Command.Execute(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Transaction][ODBC Transbase Driver][Transbase ODBC TECDOC CD 1_2015] Transbase Kernel <TECDOC_CD_1_2015@comp> error report: Version: V6.7.1.10 (Build 477) 2009/06/05 (Release) compile error: unexpected keyword: at line >6<: TOF_MANUFACTURERS as table1 ^ |
|||
6
u2006
30.01.15
✎
13:25
|
я уже пробовал так, все аналогично
|
|||
7
Ёпрст
30.01.15
✎
13:26
|
TOF_MANUFACTURERS - такая табличка хоть есть базе то ?
|
|||
8
u2006
30.01.15
✎
13:27
|
Да, конечно
|
|||
9
Ёпрст
30.01.15
✎
13:27
|
так, че выдает ?
select * from TOF_MANUFACTURERS |
|||
10
u2006
30.01.15
✎
13:28
|
Вот такой запрос отрабатывает отлично
SELECT TOF_MANUFACTURERS.MFA_ID, TOF_MANUFACTURERS. MFA_BRAND FROM TOF_MANUFACTURERS ORDER BY TOF_MANUFACTURERS.MFA_BRAND |
|||
11
Ёпрст
30.01.15
✎
13:30
|
(10) а через Open а не Execute ?
и (3) должен работать |
|||
12
u2006
30.01.15
✎
13:31
|
(11) Если бы работал, я бы не спрашивал )
|
|||
13
Ёпрст
30.01.15
✎
13:31
|
Покажи весь код
|
|||
14
igork1966
30.01.15
✎
13:34
|
TOF_MANUFACTURERS. MFA_BRAND,
TOF_MANUFACTURERS777.MFA_BRAND AS MFA_BRAND777 |
|||
15
u2006
30.01.15
✎
13:35
|
Ну для примера из (3)
Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = СоединениеTecDoc; Command.CommandText = "SELECT | table1.MFA_ID, | table1. MFA_BRAND, | table2.MFA_BRAND |FROM |TOF_MANUFACTURERS as table1 |INNER JOIN TOF_MANUFACTURERS AS table2 ON table1.MFA_ID = table2.MFA_ID |"; Recordset = Новый COMОбъект("ADODB.Recordset"); Recordset = Command.Execute(); |
|||
16
u2006
30.01.15
✎
13:35
|
(14) Хм... попробую
|
|||
17
igork1966
30.01.15
✎
13:35
|
(14) --> (0)
|
|||
18
Ёпрст
30.01.15
✎
13:39
|
Тест на вшивость:
ТекстЗапроса = "SELECT | table1.MFA_ID, | table1. MFA_BRAND, | table2.MFA_BRAND |FROM TOF_MANUFACTURERS as table1 |INNER JOIN TOF_MANUFACTURERS AS table2 ON table1.MFA_ID = table2.MFA_ID |"; НаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); НаборЗаписей.Open(ТекстЗапроса, СоединениеБД); |
|||
19
13_Mult
30.01.15
✎
13:54
|
(14) +1
|
|||
20
Ёпрст
30.01.15
✎
14:01
|
(17) намекаешь на алияс поля в селекте ? :)
Ну, так тогда еще: ТекстЗапроса = "SELECT | table1.MFA_ID, | table1. MFA_BRAND as brand1, | table2.MFA_BRAND as brand2 |FROM TOF_MANUFACTURERS as table1 |INNER JOIN TOF_MANUFACTURERS AS table2 ON table1.MFA_ID = table2.MFA_ID |"; НаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); НаборЗаписей.Open(ТекстЗапроса, СоединениеБД); |
|||
21
u2006
30.01.15
✎
14:02
|
(14) Не совсем понял
SELECT TOF_MANUFACTURERS.MFA_ID, TOF_MANUFACTURERS. MFA_BRAND, TOF_MANUFACTURERS777.MFA_BRAND AS MFA_BRAND777 FROM TOF_MANUFACTURERS INNER JOIN TOF_MANUFACTURERS AS TOF_MANUFACTURERS777 ON TOF_MANUFACTURERS777.MFA_ID = TOF_MANUFACTURERS На что это должно повлиять? Ошибка таже |
|||
22
u2006
30.01.15
✎
14:03
|
т.е для ситуации когда поле не нужно в селекте, труба?
|
|||
23
u2006
30.01.15
✎
14:03
|
Бывает что таблица нужна для соединения и потом дальнейших соединений
|
|||
24
u2006
30.01.15
✎
14:06
|
(20) Не помогло, счас попробую с open
|
|||
25
Сергиус
30.01.15
✎
14:07
|
(21)Попробуй название псевдонима таблицы без AS, т.е.
SELECT .. FROM TOF_MANUFACTURERS T1 INNER JOIN TOF_MANUFACTURERS T2 ON T1.MFA_ID = T2.MFA_ID |
|||
26
u2006
30.01.15
✎
14:08
|
(25) спс попробую, по рез отпишусь, счас на обед убегаю )))
|
|||
27
Ёпрст
30.01.15
✎
14:14
|
Хз, че там автор пробует, но (20) должно работать всегда
|
|||
28
Сергиус
30.01.15
✎
14:15
|
(27) особенностью модицификации языка sql,который используется в Текдок, является в частности то, что псевдонимы таблиц задаются без AS. А просто через пробел.
|
|||
29
Сергиус
30.01.15
✎
14:20
|
+(28) По крайней мере так было несколько лет назад..
|
|||
30
u2006
30.01.15
✎
14:22
|
(25) Вопрос закрыт. А то я думаю что с ума начал сходить. Респект
|
|||
31
Ёпрст
30.01.15
✎
14:24
|
(28) это врят ли, в t-sql тоже можно не указывать as нигде (в оледб надо. например)
сумневаюсь, что в текдоке не надо указывать as |
|||
32
u2006
30.01.15
✎
14:26
|
Все спасибо за содействие )))
|
|||
33
u2006
30.01.15
✎
14:28
|
(25) А какие еще грабли есть? Не подскажите
|
|||
34
u2006
30.01.15
✎
14:45
|
Во споткнулся дальше на граблях текдока
a function 'IFNULL(char(*),char(*))' does not exist in the database |
|||
35
Сергиус
30.01.15
✎
15:01
|
(34)http://www.sql.ru/forum/998053/tecdoc-tolko-originalnye-zaprosy
Погляди эту тему к примеру, как строятся запросы. |
|||
36
Сергиус
30.01.15
✎
15:03
|
+(35) а в твоем случае нужна функция nvl
Пример: nvl(sup_cou.sup_brand, sup_null.sup_brand) supplier. |
|||
37
Сергиус
30.01.15
✎
15:04
|
(31) Книга знаний: Получение данных из TecDoc? Легко! Даже на мисте есть тема про это)
|
|||
38
u2006
30.01.15
✎
15:30
|
(35) Огромное спасибо. То что на мисте есть это я знаю. Можно сказать с этой темы и начал )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |