Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка в запросе / 11 сообщений из 11, страница 1 из 1
15.10.2021, 09:41
    #40104633
Nick00
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Здравствуйте.
Написал такой запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT COUNT(*) FROM
(
SELECT u.surname AS fio,
d.num AS num,
p.name AS name,
r3.num_r AS num_r
FROM doc d
LEFT JOIN users u ON doc.kod_user=users.kod_elem
LEFT JOIN pred p ON  doc.kod_pred=pred.kod_elem
LEFT JOIN rasch1 r1 ON rasch1.kod_doc=doc.kod_elem
LEFT JOIN rasch3 r3 ON rasch1.kod_elem=rasch3.kod_rasch1
WHERE d.date='12.12.2020'
ORDER BY d.num
)


При попытке выполнить выдается ошибка
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 1.
select.
Не пойму в чем проблема, ведь судя по документации InterBase поддерживает вложенные запросы. Использую InterBase 2009
...
Рейтинг: 0 / 0
15.10.2021, 09:56
    #40104638
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Nick00,

1. Это реальный запрос или для того чтобы показать проблему? Потому что производна таблица тут на фиг не сдалась
2. Если дал таблице алиас, то его и надо использовать в условии связи, а не исходное имя таблицы
3. Называть поле ключевым словом date как минимум не разумно
4. Ты путаешь подзапросы и производные таблицы (Derived Tables), последние появились только в Interbase 2017

Если прям без Derived Tables вы прожить не можете, то либо обновляйте IB за денюжку, либо переходите на Firebird
...
Рейтинг: 0 / 0
15.10.2021, 10:03
    #40104641
Nick00
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Запрос привел для демонстрации проблемы. Не подскажешь как можно посчитать число записей в подобном запросе с выборкой нескольких полей в моей версии InterBase?
...
Рейтинг: 0 / 0
15.10.2021, 10:09
    #40104643
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Nick00,

даже там где Derived Tables есть, твой запрос не делает, то что ты хочешь. Отдельно считай COUNT, отдельно выбирай набор записей. По другому никак. Всяких там оконных функций, которые могу это в IB тоже нет
...
Рейтинг: 0 / 0
15.10.2021, 10:17
    #40104644
Nick00
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Симонов Денис, Так я же хочу узнать число записей в результате выполнения запроса на выборку. Как я отдельно могу от него посчитать COUNT?
...
Рейтинг: 0 / 0
15.10.2021, 10:35
    #40104652
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Nick00
Так я же хочу узнать число записей в результате выполнения запроса на выборку. Как я отдельно могу от него посчитать COUNT?

А чем не устраивает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT COUNT(*)
FROM doc d
LEFT JOIN users u ON doc.kod_user=users.kod_elem
LEFT JOIN pred p ON  doc.kod_pred=pred.kod_elem
LEFT JOIN rasch1 r1 ON rasch1.kod_doc=doc.kod_elem
LEFT JOIN rasch3 r3 ON rasch1.kod_elem=rasch3.kod_rasch1
WHERE d.date='12.12.2020'


Или я чего-то не вижу?
...
Рейтинг: 0 / 0
15.10.2021, 10:38
    #40104655
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Nick00,

1. выполнить в той же SNAPSHOT транзакции подобный запрос, только вместо списка полей написать COUNT(*)
2. Запихать оба запроса внутрь ХП и сделать выборку из неё
3. На клиенте сделать FetchAll и посчитать количество отфетченных записей
4. Перейти на Firebird 3.0 или лучше 4.0 и использовать COUNT(*) OVER()

можно и ещё варианты придумать
...
Рейтинг: 0 / 0
15.10.2021, 10:39
    #40104656
Nick00
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
m7m, спасибо
...
Рейтинг: 0 / 0
15.10.2021, 10:40
    #40104657
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
m7m,

а ему надо одновременно значения полей получить и количество записей которые вернул запрос
...
Рейтинг: 0 / 0
15.10.2021, 10:43
    #40104659
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
>Как я отдельно могу от него посчитать COUNT?
Если транзация не снапшот, то отдельный каунт может и погоду на марсе показать.

Сфетчить все записи и подсчитать сколько сфетчилось?
...
Рейтинг: 0 / 0
15.10.2021, 11:03
    #40104665
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в запросе
Симонов Денис
m7m,

а ему надо одновременно значения полей получить и количество записей которые вернул запрос

Ну мой хрустальный шар на столько не работает
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка в запросе / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]