|
|
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые форумчане Передо мной стоит задача взять из системных таблиц следующие данные: 1) Позиция поля RDB$FIELD_POSITION 2) Имя поля RDB$FIELD_NAME 3) Длина поля RDB$FIELD_LENGHTH 4) Тип поля (integer,char..) RDB$FIELD_TYPE 5) Ограничение (Primary key, not null..) RDB$CONSTRAINT_TYPE За основу взял запрос №1 из этой статьи , дописал до следующего вида: Код: sql 1. 2. 3. 4. При попытке выполнить такой запрос появляется следующая ошибка: SQL error code -204 Ambiguous field name between table RDB$RELATION_FIELDS and table RDB$RELATION_CONSTRAINTS RDB$RELATION_NAME Может подскажете, где я ошибся в составлении запроса, и как это поправить? Заранее благодарю. использую Delphi 7.3.4.3 Lite и Firebird 2.5.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 13:07:31 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
DohAmbiguous field name between table RDB$RELATION_FIELDS and table RDB$RELATION_CONSTRAINTS RDB$RELATION_NAME Может подскажете, где я ошибся в составлении запроса, и как это поправить? Ты не указал из какой из вышеназванных таблиц хочешь взять вышеназванное поле. Открой для себя Google translate или англо-русский словарь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 13:27:47 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Doh, А написать R.RDB$RELATION_NAME пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 13:46:44 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, авторОткрой для себя Google translate или англо-русский словарь С переводом проблем не было, просто не понял сам посыл. авторТы не указал из какой из вышеназванных таблиц хочешь взять вышеназванное поле. А вот за это сообщение спасибо, Вы сдвинули меня с мертвой точки. Изменил код следующим образом: Код: sql 1. 2. 3. 4. Теперь запрос выполняется, но не так, как мне нужно. В таблице-результате запроса происходит дублирование данных. Пример: FieldPosition: 0 FieldName: NOM FieldLenghth: 10 FieldType: 14 ConstraintType: NOT NULL и так 50 строк, потом еще 10 строк, но вместо NOT NULL стоит PRIMARY KEY. Причем наблюдается такое с каждым полем проверяемой таблицы (той, которая R.RDB$RELATION_NAME), хотя реально только поле NOM является PRIMARY KEY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 14:05:13 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Doh, Нет условия связи для RDB$RELATION_CONSTRAINTS C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 14:10:16 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Вот только что по совету Dimitry Sibiryakov попробовал. Запрос начал выполняться, но другая проблема появилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 14:14:21 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
авторНет условия связи для RDB$RELATION_CONSTRAINTS C m7m, я тоже так подумал. Значит, мне нужно связать F.RDB$FIELD_NAME с каким-то полем из RDB$RELATION_CONSTRAINTS, но с каким? Есть ли в RDB$RELATION_CONSTRAINTS какое нибудь поле типа FIELD_NAME или FIELD_INDEX? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:07:57 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
DohЕсть ли в RDB$RELATION_CONSTRAINTS какое нибудь поле типа FIELD_NAME или FIELD_INDEX? Все поля, какие есть в этой и остальных системных таблицах описаны в Language Reference. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2014, 15:11:05 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, можно еще раз Вашей подсказки попросить? Чтобы связать данные из RDB$RELATION_CONSTRAINTS C с RDB$FIELDS F и RDB$RELATION_FIELDS R, мне нужно воспользоваться промежуточной таблицей RDB$INDEX_SEGMENTS S, правильно? То есть условие должно быть таким: 1) F связывается с R по F.RDB$FIELD_NAME и R.RDB$FIELD_SOURCE 2) R связывается с S по RDB$FIELD_NAME 3) S связывается с C по RDB$INDEX_NAME Готовый запрос тогда должен выглядеть следующим образом Код: sql 1. 2. 3. 4. 5. Видимо RDB$RELATION_CONSTRAINTS C всё равно неправильно привязана, результат запроса выдает информацию только про поле PRIMARY KEY, опять же может продублировать такую строку несколько раз. Вопрос: правильно ли я пытаюсь делать связку через дополнительную системную таблицу RDB$INDEX_SEGMENTS S, или это ошибочный путь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:46:46 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Doh1) F связывается с R по F.RDB$FIELD_NAME и R.RDB$FIELD_SOURCE 2) R связывается с S по RDB$FIELD_NAME 3) S связывается с C по RDB$INDEX_NAME 2) по RDB$FIELD_NAME AND RDB$RELATION_NAME Пиши явные JOIN - проще разобраться как что с чем связывается. В твоей мешанине чёрт ногу сломит. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 16:56:59 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 09:42:29 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
Чуть переписать, и получится: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 09:54:05 |
|
||
|
Запрос к системным таблицам
|
|||
|---|---|---|---|
|
#18+
__Avenger__, огромное Вам спасибо! С учётом моих нужд запрос выглядит так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2014, 12:52:47 |
|
||
|
|

start [/forum/topic.php?fid=40&tid=1563787]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
207ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 523ms |

| 0 / 0 |
