|
8 / 5 / 0
Регистрация: 03.07.2013
Сообщений: 30
|
|
Запрос по внешним ключам03.07.2013, 13:17. Показов 6807. Ответов 3
Метки нет (Все метки)
Здравствуйте, я новичок в postgresql, пара дней от роду, помогите чем сможете.
Основная задача такая: Нужно построить древовидную модель на основе внешних ключей (foreign key) из PostgreSQL. Суть такова: в комбобоксе выбирается таблица, поля которой будут являться корнем дерева, если у поля имеется внешний ключ, то по этому ключу создаём детей которые будут состоять из полей таблицы на которую ссылается ключ. А вопрос в следующем: Какой составить запрос для выдергивания полей из таблиц? И как определить есть ли у поля внешний ключ? Заранее спасибо!
0
|
|
| 03.07.2013, 13:17 | |
|
Ответы с готовыми решениями:
3
Индекс по внешним ключам!? Поиск по внешним ключам Связать таблицы по внешним ключам |
|
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
|
|||
| 03.07.2013, 16:00 | |||
|
Только надо сверяться с документацией к соответствующей версии PostgreSQL. Данная информационная схема постоянно пополняется, я точно не знаю в какой версии какие представления появились и имеются. Документация: здесь
1
|
|||
|
8 / 5 / 0
Регистрация: 03.07.2013
Сообщений: 30
|
||||
| 09.07.2013, 07:33 [ТС] | ||||
|
Мне нужно определить есть ли внешний ключ в выбранной таблице, если есть перейти по нему и изъять имена полей. На сайте http://citforum.ru/database/in... e_03.shtml нашел что-то подобное, но не могу разобрать запрос. select rdb$relation_name , rdb$index_name from rdb$indices where rdb$index_name in (select rdb$foreign_key from rdb$indices where rdb$index_name = "RDB$FOREIGN9"); Что подставлять вместо rdb$, что это вообще? Почему в кавычках пишется RDB$FOREIGN9, а не 'FOREIGN KEY' ? У меня в БД следующие данные: схема - archive таблица - blocks_credits, в которой есть внешний ключ ссылающийся на таблицу access_users Попытался сделать так, но выдает синтаксические ошибки. Как правильно составить запрос? queryModel = new QSqlQueryModel; queryModel->setQuery("SELECT relation_name , index_name " "FROM indices WHERE index_name IN (SELECT foreign_key FROM indices " "WHERE index_name = 'FOREIGN KEY');"); treeView->setModel(queryModel); Экспериментировал с запросами, так вроде выводит имена всех внешних ключей в таблицах. "SELECT constraint_name FROM information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY';"; Добавлено через 18 часов 18 минут select fk.TABLE_NAME, pk.TABLE_NAME, c_fk.ORDINAL_POSITION, c_fk.COLUMN_NAME, c_pk.COLUMN_NAME from INFORMATION_SCHEMA.TABLE_CONSTRAINTS as fk JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAIN TS as rc on rc.CONSTRAINT_NAME = fk.CONSTRAINT_NAME JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS as pk on pk.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE as c_fk on c_fk.CONSTRAINT_NAME = fk.CONSTRAINT_NAME JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE as c_pk on c_pk.CONSTRAINT_NAME = pk.CONSTRAINT_NAME and c_pk.ORDINAL_POSITION = c_fk.ORDINAL_POSITION where fk.CONSTRAINT_TYPE = 'FOREIGN KEY' order by c_fk.ORDINAL_POSITION Добавлено через 2 часа 28 минут Решение нашел, буду рад если кому пригодится. Заменяем where на эту строку. where fk.table_schema='ваша схема' AND fk.table_name='ваша таблица' AND fk.CONSTRAINT_TYPE = 'FOREIGN KEY'
0
|
||||
|
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
|
||
| 09.07.2013, 16:11 | ||
|
А за запрос спасибо, при случае и пригодиться
0
|
||
| 09.07.2013, 16:11 | |
|
Помогаю со студенческими работами здесь
4
Гарантировать правильную запись по внешним ключам INSERT INTO по внешним ключам SQL C# Windows Forms Создать запрос для выборки данных из таблицы по внешним ключам Поиск по внешним ключам Как написать запрос на таблицы с внешним ключем Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|