49 / 49 / 3
Регистрация: 15.11.2009
Сообщений: 372
|
|
1 | |
Сложный запрос07.06.2016, 11:42. Показов 1590. Ответов 3
Метки нет (Все метки)
Всем привет!
Подскажите пожалуйста, как реализовать следующее. В базе есть перечень таблиц, в которых различные поля, но есть список полей, в котором, по крайне мере, несколько гарантированно находятся в таблицах. Это поля 'id', 'code', 'name', 'number', 'source1_code', 'source2_code'. То есть в некоторых таблицах есть поля 'id', 'code', 'name', в других 'id', 'source1_code', 'source2_code'. Могут быть и другие комбинации. Подскажите пожалуйста, как в результате получить таблицу с колонками: table_name, 'id' 'code', 'name', 'number', 'source1_code', 'source2_code'. Где table_name - название таблицы в базе, а другие колонки могут принимать значения 0 или 1; 1 - означает, что данная колонка есть в таблице, 0 - если этой колонки нет в таблице.
0
|
07.06.2016, 11:42 | |
Ответы с готовыми решениями:
3
сложный запрос Сложный SQL запрос Сложный запрос с датами сложный запрос в postgre |
1251 / 967 / 382
Регистрация: 02.09.2012
Сообщений: 2,989
|
||||||
07.06.2016, 12:14 | 2 | |||||
Непонятно, вы хотите узнать какие колонки у вас в таблицах базы?????
Вот такой запрос не подойдет для начала (укажите верно имя вашей схемы, если не public)
0
|
49 / 49 / 3
Регистрация: 15.11.2009
Сообщений: 372
|
|
07.06.2016, 12:36 [ТС] | 3 |
Мне необходимо сформировать таблицу, структуру которой я описал выше.
На основе данной таблицы, я планирую сформировать динамические запросы для добавления записей именно в те колонки, напротив которых стоит 1.
0
|
1251 / 967 / 382
Регистрация: 02.09.2012
Сообщений: 2,989
|
||||||
07.06.2016, 16:17 | 4 | |||||
Сообщение было отмечено Helios1.618 как решение
Решение
Сообразил. По сути результирующая таблица - это шахматка ('pivot table'). В стандартном SQL, насколько мне известно, еще нет способов делать такие запросы. Споров и разговоров по этому поводу очень много, но из всего можно выделить два способа построения: 1. создаете временную таблицу нужной вам структуры и хранимой процедурой ее заполняете так, как вам надо; 2. используете различные расширения, предусмотренные в СУБД.
В postgresql таким расширением является tablefunc. Я не могу сходу написать именно нужный вам запрос, надо подумать, но вот это уже должно быть близко к тому, что вы хотите. Добавлено через 5 минут Вот, примерьте для себя
1
|
07.06.2016, 16:17 | |
07.06.2016, 16:17 | |
Помогаю со студенческими работами здесь
4
Сложный SQL запрос Сложный запрос из одной таблицы с предварительной обработкой данных сложный запрос (для меня сложный) Сложный запрос Сложный запрос сложный запрос(!) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |