Nous utilisons une connexion Postgres/PostGis pour obtenir des données qui sont publiées via un geoserver.Requête UNION ALL dynamique dans Postgres
La requête ressemble à ceci au moment:
SELECT
row_number() over (ORDER BY a.ogc_fid) AS qid, a.wkb_geometry AS geometry
FROM
(
SELECT * FROM test
UNION ALL
SELECT * FROM test1
UNION ALL
SELECT * FROM test2
)a
Dans notre db seulement shapefiles valides seront importées chacun dans une seule table il serait logique de faire l'UNION ALL partie dynamique (boucle sur chaque table et faites la déclaration UNION ALL). Existe-t-il un moyen de le faire de manière standard à Postgres ou dois-je écrire une fonction et à quoi ressemblerait la syntaxe? Je suis assez nouveau à SQL.
Les fichiers de formes ont une structure de données différente et seules la colonne ogc_fid et la colonne wkb_geometry sont toujours disponibles et nous souhaitons regrouper toutes les tables de la base de données.
Je ne sais pas vraiment ce que cette chose est shapefile, mais pourquoi ne pas importer juste tout en une seule table? Une autre option serait d'utiliser l'héritage de table –
Votre question n'est pas vraiment claire. Donc la réponse dépend de ce que vous voulez faire. Mais la solution facile est de créer un [** DYNAMIC QUERY **] (http://www.postgresql.org/docs/9.4/static/ecpg-dynamic.html) mais vous avez besoin d'un moyen de savoir quelles sont les tables que vous voulez rejoindre –
dans les fichiers de formes, vous pouvez stocker des données géographiques. Nous voudrions éviter de tout stocker dans une seule table car la structure de données des géodonnées peut être différente et nous aimerions garder toutes les colonnes de chaque fichier pour d'autres requêtes –