слушай, ты мое сообщение прочитал? А почему опять ... пишешь вместо нормального запроса? Ждешь, пока тебе его на блюдечке вынесут?
Запрос №1 выводит данные по номерам полей верно.
это случайно получилось. я тебе еще раз говорю - столбцы и их номера - в rdb$index_segments. Твое объединение таблиц по RDB$INDICES.RDB$INDEX_ID - 1) = RDB$RELATION_FIELDS.RDB$FIELD_POSITION
это неправильно.
Так ты бы сам не выкаблучивался, а сразу так и сказал.
В любом случае, Спасибо за помощь и с пользой проведеное время.
На досуге можешь перечитать свои жутко информативные сообщения.
если будешь выступать, вместо того чтобы 5 минут подумать - забаню элементарно.
1) "Таблица1" в ней поля:
ID
FK1
FK2
FIELD1
FK3
2) Удалил FIELD1, FK3
3) Создал FIELD11, FK33
столбцы имеют соответственно номера 0, 1, 2, 3, 4, 5.
по каким столбцам у тебя индексы на данный момент есть - непонятно.
Допустим, есть по ID, FK1, FK2, F3. Индекс по ID будет иметь номер 1 (в rdb$indices). Если ты FK по этой таблице будешь создавать не в порядке FK1, FK2, FK3, а например 3, 2 и 1, то они будут иметь номера индексов:
FK3 - 2
FK2 - 3
FK1 - 1
Если ты удалил FIELD1, то столбец FK3 получил номер 4. Номер индекса для него естественно, не изменится. Если создал FIELD11, у него номер будет 5, а если на него создал FK33, то его индекс будет иметь номер 4.
А теперь открой rdb$index_segments.
Столбец RDB$FIELD_POSITION в этой таблице указывает на порядковый номер столбца В ИНДЕКСЕ!!!
Поскольку номера столбцов в таблице могут меняться, никто на них не закладывается. То есть, можно вытащить
1. порядковый номер столбца в таблице
2. индекс, в который попадает этот столбец
3. порядковый номер столбца в индексе