|
Вопрос: Почему под FIBPlus 6.5 на некоторых запросах стала появляться ошибка
"COLUMN The column ... was specified multiple times for derived table unnamed."?
Пример такого запроса:
SELECT PAYMENTS.ID,PAYMENTS.DATE_ORDER,PAYMENTS.SERVICE_STATUS,При этом запрос работает, везде (в IBExpert, console и т.д.)
Ответ: Вы пытаетесь выполнить этот запрос из pFIBDataset с включенной опцией poAskRecordCount для сервера Firebird 2.x.
Дело в том, что под Firebird 2.x poAskRecordCount работает через Select Count(*) from (Select...)
Для вашего запроса это будет так:
Select Count(*) from (SELECT PAYMENTS.ID,PAYMENTS.DATE_ORDER,PAYMENTS.SERVICE_STATUS,Firebird 2.x этот запрос выполнить не в состоянии и выдает именно ту ошибку, которую вы привели. Иными словами, ошибка не в вашем изначальном запросе, а в запросе, который реализует функцию poAskRecordCount.
Если переписать ваш изначальный запрос как:
SELECT PAYMENTS.ID,PAYMENTS.DATE_ORDER,PAYMENTS.
SERVICE_STATUS,MAIN.ID ID1 ,MAIN.CLNT,CLIENTS.ID ID2,CLIENTS.R FROM PAYMENTS LEFT JOIN MAIN ON PAYMENTS.ID_COMPANY=MAIN.ID LEFT JOIN CLIENTS ON MAIN.clnt=CLIENTS.ID WHERE PAYMENTS.SERVICE_STATUS=0 AND PAYMENTS.DATE_ORDER IS NOT NULL
то все будет прекрасно работать. Так что в этой ситуации придется или выключить в датасете опцию poAskRecordCount, или переписать запрос.
Вот уйду я от вас на IBX. И буду всю жизнь от их неполноценности страдать... Да Джефа не добрым словом поминать... :) >>