Change your case, as it looks like your database layer is automatically quoting it if you use CamelCase.
A quick test in a Firebird 2.5 database here shows:
SQL> select t1.usuario, t1.NoExisto from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-T1.NOEXISTO
-At line 1, column 23
SQL> select t1.usuario, "t1.NoExisto" from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-t1.NoExisto
-At line 1, column 34
As you see, the database engine generates an error with camel case only when it gets the SQL query using quotes.
I suggest you to try myfield_id or use the correct case you have in your field name.
select
table1.pkfield1,
table1.field_no,
table1.fk1_id,
table1.fk2_id,
table1.myfield_id,
table1.bfield,
table2.desc1,
table2.desc2,
table2.desc3
from table2
right outer table1 on (table2.pk1_id = table1.fk1_id)
Order by table1.fk1_id, table1.field_no desc
Submitted by: Ukrtelecom (ukrtelecom)
WORK —
insert into stat_wtmp (bill_serv_id,
login,
domain_name,
calling_station_id,
called_station_id,
nas_ip_address,
framed_ip_address,
nas_port_id,
session_id,
connect_info,
time_begin,
session_active,
cur_input_octets,
cur_output_octets,
/* connect_info,*/
time_end
)
values(:CUR_BILL_SERVICE_ID,
:login,
:domain_name,
:caller_id,
:called_id,
:nas_ip_addr,
:user_ip_addr,
:nas_port_id,
:session_id,
:connect_info,
:packet_timestamp,
:cur_session_active,
:input_octets,
:output_octets,
/* :connect_info,*/
:packet_timestamp);
NOT WORK —
insert into stat_wtmp (bill_serv_id,
login,
domain_name,
calling_station_id,
called_station_id,
nas_ip_address,
framed_ip_address,
nas_port_id,
session_id,
connect_info,
time_begin,
session_active,
cur_input_octets,
cur_output_octets,
connect_info,
time_end
)
values(:CUR_BILL_SERVICE_ID,
:login,
:domain_name,
:caller_id,
:called_id,
:nas_ip_addr,
:user_ip_addr,
:nas_port_id,
:session_id,
:connect_info,
:packet_timestamp,
:cur_session_active,
:input_octets,
:output_octets,
:connect_info,
:packet_timestamp);
Dynamic SQL Error.
SQL error code = -206.
unknown ISC error 336397210.
unknown ISC error 336397208.
FIELD — connect_info;
TABLE STAT_WTMP:
CREATE TABLE STAT_WTMP (
ID_WTMP_ITEM ID /* ID = INTEGER DEFAULT 0 */,
BILL_SERV_ID ID /* ID = INTEGER DEFAULT 0 */,
NAS_IP_ADDRESS IPADDRESS /* IPADDRESS = VARCHAR(15) */,
NAS_PORT_ID BIGINTEGER /* BIGINTEGER = BIGINT */,
TIME_BEGIN ACCOUNT /* ACCOUNT = INTEGER */,
TIME_END ACCOUNT /* ACCOUNT = INTEGER */,
SESSION_TIME COUNTER /* COUNTER = INTEGER */,
CALLING_STATION_ID VARCHAR128 /* VARCHAR128 = VARCHAR(128) */,
CALLED_STATION_ID VARCHAR128 /* VARCHAR128 = VARCHAR(128) */,
FRAMED_IP_ADDRESS IPADDRESS /* IPADDRESS = VARCHAR(15) */,
SESSION_ID VARCHAR128 /* VARCHAR128 = VARCHAR(128) */,
INPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
CUR_INPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
OUTPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
CUR_OUTPUT_OCTETS BIGINTEGER DEFAULT 0 /* BIGINTEGER = BIGINT */,
CONNECT_INFO VARCHAR64 /* VARCHAR64 = VARCHAR(64) */,
LOGIN VARCHAR32 /* VARCHAR32 = VARCHAR(32) */,
DOMAIN_NAME VARCHAR64 /* VARCHAR64 = VARCHAR(64) */,
SESSION_ACTIVE TRUEFALSE DEFAULT 1 /* TRUEFALSE = INTEGER */,
DATE_WR DATETIME DEFAULT ‘now’ /* DATETIME = TIMESTAMP */,
SPEED_UP VARCHAR16 /* VARCHAR16 = VARCHAR(16) */,
SPEED_DOWN VARCHAR16 /* VARCHAR16 = VARCHAR(16) */
);
|
|
|
|

информация о разделе
![]() |
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ. |

[Firebird] В запросе не определяется поле
, Рекурсивный запрос не разруливает поле
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Full Member
Рейтинг (т): 5 |
Привет. У меня есть иерархическая таблица XXXX. Пытаюсь для нода определить парентов и чайлдов, чтобы произвести вставку в другую таблицу. Однако Firebird 2.1 ругается на: Column does not belong to referenced table. Сам текст запроса: поля есть. Если поменять куски CHILDREN и PARENT_LIST местами, то будет ругаться на то, что нет PT.ID. В чем может быть проблема?
MERGE INTO MO_DATAGROUP_LINK DGL USING ( WITH RECURSIVE CHILDREN AS ( SELECT 923 ID FROM RDB$DATABASE UNION ALL SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID ), PARENT_LIST AS ( SELECT PARENTID ID FROM SPRT WHERE ID = 923 UNION ALL SELECT PARENTID ID FROM SPRT T JOIN PARENT_LIST PT ON T.ID = PT.ID) SELECT ID FROM PARENT_LIST WHERE ID IS NOT NULL UNION ALL SELECT ID FROM CHILDREN ) PX ON DGL.DATAID = PX.ID AND DGL.DATAGROUPID = 896 AND DGL.TABLENAME = ‘XXXX’ WHEN NOT MATCHED THEN INSERT (DATAGROUPID, TABLENAME, DATAID) VALUES (:D_VALUE, ‘XXXX’, PX.ID); |
|
Romkin |
|
|
А где у тебя таблица C? |
|
spy_ |
|
|
Full Member
Рейтинг (т): 5 |
Romkin, «JOIN CHILDREN C ON», не? |
|
Romkin |
|
|
Присоедини псевдоним ко всем полям, оно путается скорее всего |
|
spy_ |
|
|
Full Member
Рейтинг (т): 5 |
Если присоединять сюда «SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID» по аналогии с выборкой PARENT_LIST, то толку никакого, к сожалению, та же ошибка. Кстати, если поменять местами блоки CHILDREN и PARENT_LIST как есть, то будет уже ругаться на выборку PARENT_LIST аналогично. |
|
Игорь Акопян |
|
|
простите, а это что без запятой пишется?
SELECT PARENTID ID FROM |
|
spy_ |
|
|
Full Member
Рейтинг (т): 5 |
Игорь Акопян, а почему оно должно писаться с запятой? Добавлено 23.10.12, 14:05 |
|
Alex2011 |
|
|
Member
Рейтинг (т): 1 |
Думаю что проще(или даже НАДО) в хр.процедуре сделать,особенно если там рекурсия.(Разбираться с твоим запросом лень) Я когда-то писал хр.процедуру (с запросом выходил большой гемор-я решил,что это невозможно сделать,хотя может и не так-не претендую на истину в последней инстанции),в которой определял верхнего парента,всех чайдлов,если не ошибаюсь.(давно было,но процедуру найти,думаю, можно) Похоже и тебе что-то аналогичное надо? Сообщение отредактировано: Alex2011 — 08.11.12, 10:14 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Базы данных: SQL
- Следующая тема
[ Script execution time: 0,0282 ] [ 15 queries used ] [ Generated: 30.01.23, 05:03 GMT ]



