подзапрос
подзапрос
не пробовал раньше подзапросы в секции select ... from ...
вроде бы с FB 1.5 можно (читал RN)
так вот, запрос следующего вида:
select r_.r_user,
(select count(r_1.item) from table_item r_1 where (r_1.date_ in between :d1 and :d2) and (r_1.r_user=r_.r_user))
from table_item
where (r_.date_ in between :d1 and :d2) and (r_take=:id_take)
в YA-887 проходит и выдаёт правильные результаты, в FB 1.5.2 и FB 2.0 3alpha вообще не катит (ошибку с № ХХХХ выдаёт)
я понимаю, что в подзапросе используется в качестве аргумента значение из основного запроса
Это фича YA? отмечу, что в боевой БД я это не использую, и в ХП этот запрос даёт в YA неправильные результаты (почему-то count(r_1.item) не обнуляется
вроде бы с FB 1.5 можно (читал RN)
так вот, запрос следующего вида:
select r_.r_user,
(select count(r_1.item) from table_item r_1 where (r_1.date_ in between :d1 and :d2) and (r_1.r_user=r_.r_user))
from table_item
where (r_.date_ in between :d1 and :d2) and (r_take=:id_take)
в YA-887 проходит и выдаёт правильные результаты, в FB 1.5.2 и FB 2.0 3alpha вообще не катит (ошибку с № ХХХХ выдаёт)
я понимаю, что в подзапросе используется в качестве аргумента значение из основного запроса
Это фича YA? отмечу, что в боевой БД я это не использую, и в ХП этот запрос даёт в YA неправильные результаты (почему-то count(r_1.item) не обнуляется
а слабо точный запрос привести, а не обрубок?
какая дословно ошибка выдается?
по сути идентичный запрос:
у меня работает на всех версиях
какая дословно ошибка выдается?
по сути идентичный запрос:
Код: Выделить всё
select rdb$relation_name,
(select count(*) from rdb$relation_fields r_1 where r_1.rdb$relation_name=r_.rdb$relation_name)
from rdb$relations r_
не слабо, в понедельнтк токо (патамуч-то не хочу врать -))dimitr писал(а):а слабо точный запрос привести, а не обрубок?
какая дословно ошибка выдается?
могу и срез БД кинуть
там ещё join-ы есть
но суть в том, что YA в подзапросе понимает значение параметра (который является возвращаемым значением запроса в основной части)
я реализовал это через ХП, но ведь странно, что в YA этот запрос прходит, а в FB нет...
щшибка ISC{{{{{{ не помню число, но одинаковое в FB...
щаз окажется, что там еще и агрегаты есть...Karp писал(а): могу и срез БД кинуть
там ещё join-ы есть
я тебе привел пример именно такого запроса. Все работает ОК.Karp писал(а):но суть в том, что YA в подзапросе понимает значение параметра (который является возвращаемым значением запроса в основной части)
IMHO, текст было проще запомнитьKarp писал(а):щшибка ISC{{{{{{ не помню число, но одинаковое в FB...

щаз начну ругаться матом. Где текст ошибки? И вообще, "не верю" (с)Karp писал(а):нет ведь функции LIST в FB-2-A3, а вот рестор метаданных проходит.. полный рестор обрубается...
Запрос (в Ya работает):dimitr писал(а): щаз окажется, что там еще и агрегаты есть...
Код: Выделить всё
SELECT R_U.RING_USER_NAME,
(SELECT COUNT(R_D1.RING_ITEM_ID) FROM RING_DATA R_D1
WHERE (CAST(R_D1.RING_TIME AS DATE) BETWEEN :D1 AND :D2) AND
(R_D1.RING_TYPE_ID=18) AND
(R_D1.RING_USER_ID=R_U.RING_USER_ID)) AS NN_1,
COUNT(R_D.RING_USER_ID) AS NN_RES
FROM RING_USERS R_U JOIN
RING_DATA R_D ON (R_D.RING_USER_ID=R_U.RING_USER_ID) JOIN
RING_ITEMS R_I ON (R_I.RING_ITEM_ID=R_D.RING_ITEM_ID) JOIN
RING_TAKES R_T ON (R_T.RING_TAKE_ID=R_I.RING_TAKE_ID)
WHERE (CAST(R_D.RING_TIME AS DATE) BETWEEN :D1 AND :D2) AND
(R_T.RING_TAKE_ID=3) AND
(R_D.RING_TYPE_ID IN (17,18,26,27,28,29))
GROUP BY R_U.RING_USER_NAME
ORDER BY R_U.RING_USER_NAME
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
unknown ISC error 335544824.
Ощибка в 2.0:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
за LIST согласен на канделявр, "соврамши" (C), я его комментировалdimitr писал(а):щаз начну ругаться матом. Где текст ошибки? И вообще, "не верю" (с)
но полный рестор всё одно не проходит, буду разбираться, текст ошибки обязательно сообщу [/code]
странно, на 1.5.2 ошибка так же как и на 2-ке должна быть опознана.Karp писал(а):Запрос (в Ya работает):dimitr писал(а): щаз окажется, что там еще и агрегаты есть...
Ощибка в 1.5.2:
Ощибка в 2.0:
Добавь в group by секцию поле R_U.RING_USER_ID:
Код: Выделить всё
GROUP BY R_U.RING_USER_NAME, R_U.RING_USER_ID
ORDER BY R_U.RING_USER_NAME
от 13.12.2004 01.05dimitr писал(а): firebird.msg не соответствует версии сервера
при ресторе постоянно вылетает ошибка
Код: Выделить всё
gbak: restoring data for table TABLE_NAME
gbak: ERROR: conversion error from string "0"
gbak: ERROR: gds_$send failed
gbak: Exiting before complection due to erors
Код: Выделить всё
update RDB$FIELDS set
RDB$COLLATION_ID = 0
where RDB$FIELD_NAME = 'STRING_64';
commit;
слушай, ты там, конечно, можешь переколупать сам все что угодно, но такие сообщения об ошибках слать не надо. Сам наковырял в системных таблицах, сам и разбирайся. Не надо грузить людей проблемами, которые вызваны твоими личными экспериментами.
Тем более что про изменение коллэйтов и чарсетов написано в www.ibase.ru/devinfo/ibrusfaq.htm
Тем более что про изменение коллэйтов и чарсетов написано в www.ibase.ru/devinfo/ibrusfaq.htm