8 / 5 / 0
Регистрация: 03.07.2013
Сообщений: 30
|
|
Запрос по внешним ключам03.07.2013, 13:17. Показов 6672. Ответов 3
Метки нет Все метки)
(
Здравствуйте, я новичок в postgresql, пара дней от роду, помогите чем сможете.
Основная задача такая: Нужно построить древовидную модель на основе внешних ключей (foreign key) из PostgreSQL. Суть такова: в комбобоксе выбирается таблица, поля которой будут являться корнем дерева, если у поля имеется внешний ключ, то по этому ключу создаём детей которые будут состоять из полей таблицы на которую ссылается ключ. А вопрос в следующем: Какой составить запрос для выдергивания полей из таблиц? И как определить есть ли у поля внешний ключ? Заранее спасибо!
0
|
03.07.2013, 13:17 | |
Ответы с готовыми решениями:
3
Индекс по внешним ключам!? Поиск по внешним ключам Связать таблицы по внешним ключам |
1258 / 973 / 383
Регистрация: 02.09.2012
Сообщений: 3,001
|
|||
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
|
1258 / 973 / 383
Регистрация: 02.09.2012
Сообщений: 3,001
|
||
09.07.2013, 16:11 | ||
А за запрос спасибо, при случае и пригодиться
0
|
09.07.2013, 16:11 | ||||||
Помогаю со студенческими работами здесь
4
Гарантировать правильную запись по внешним ключам INSERT INTO по внешним ключам SQL C# Windows Forms Создать запрос для выборки данных из таблицы по внешним ключам Поиск по внешним ключам Как написать запрос на таблицы с внешним ключем Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
|
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
|
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
|
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров.
3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
|
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
|
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
|
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
|
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
|
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования.
. . .
|
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
|