Название: Получение комментариев полей и таблиц Postgresql Отправлено: Alexorleon от Июль 16, 2013, 12:53 Здравствуйте, помогите доделать запрос.
Данный запрос выводит имя таблицы, комментарий к таблице, имя поля и комментарий к полю по одной выбранной таблице. SELECT c.relname, obj_description(c.oid), a.attname, d.description FROM pg_class c, pg_attribute a, pg_description d WHERE c.oid = a.attrelid AND a.attnum > 0 AND (d.objoid = c.oid) AND (a.attnum = d.objsubid) AND c.relname = 'имя таблицы' ORDER BY c.oid; Но он НЕ выводит данные если нет комментариев. Если их нет, он не выводит даже имя таблицы. Как изменить этот запрос(или сделать другой) так, чтобы он всегда выводил имя таблицы и имена полей этой таблицы, а комментарии к ним, если их нет, просто делал пустыми? Название: Re: Получение комментариев полей и таблиц Postgresql Отправлено: _OLEGator_ от Июль 16, 2013, 13:40 Читай про LEFT JOIN.
Название: Re: Получение комментариев полей и таблиц Postgresql Отправлено: Alexorleon от Июль 17, 2013, 06:07 Читай про LEFT JOIN. А вы не могли бы более конкретно. Делаю так, но результат тот же. SELECT c.relname, obj_description(c.oid), a.attname, d.description FROM pg_class c left join pg_description d on (d.objoid = c.oid) left join pg_attribute a on (a.attnum = d.objsubid) WHERE c.oid = a.attrelid AND a.attnum > 0 AND c.relname = 'имя таблицы' ORDER BY c.oid; Название: Re: Получение комментариев полей и таблиц Postgresql Отправлено: _OLEGator_ от Июль 17, 2013, 09:20 Матчасть по SQL подтянуть надо...
WHERE c.oid = a.attrelid убивает весь твой JOIN и выбирает как раз только те данные, которые существуют в обоих таблицах. Это условие надо в JOIN перенести. |