Suite

Fusion de plusieurs tables à l'aide de SQL dans CartoDB

Fusion de plusieurs tables à l'aide de SQL dans CartoDB


J'ai 5 tables séparées dans CartoDB chacune avec un nombre variable de colonnes, mais toutes contenant ces 4 colonnes (the_geom, name, type, unit_code). Je veux les fusionner tous dans 1 nouvelle table et me débarrasser de la plupart des colonnes. J'ai compris que UNION ALL se débarrassera des colonnes dont je n'ai pas besoin à la fin, mais je ne vois pas comment fusionner les tables à l'aide de SQL. Chaque fois que j'essaie UNION ALL, cela ne veut pas fonctionner. J'ai aussi vu que parfois j'ai besoin d'écrire UNION_ALL avec le trait de soulignement pour que cela fonctionne ? Voici mon exemple de code :

SELECT the_geom, name, type, unit_code FROM points_of_interest UNION ALL SELECT the_geom, altname, descriptio, unitcode FROM arch_visitor_centers UNION ALL SELECT the_geom, name FROM arch_trailheads UNION ALL SELECT the_geom, bldg_name FROM arch_restrooms UNION ALL_NAME, SELECT the arch_ , nom, FROM arch_campgrounds UNION ALL

La réponse la plus rapide est donc que SQL attend la même dimension de colonnes dans chaque instruction sur laquelle vous essayez de faire une UNION. Ainsi, toute la première colonne de vos instructions SQL doit correspondre à ce que vous voulez être dans la première colonne de votre résultat. En règle générale, ils devront également correspondre dans le type de données.

Les noms de colonnes eux-mêmes n'ont pas d'importance.

Donc, pour faire fonctionner le vôtre, vous feriez quelque chose comme

SELECT the_geom, name, type,"AS description, unit_code FROM points_of_interest UNION ALL SELECT the_geom, altname,"AS type, descriptio, unitcode FROM arch_visitor_centers UNION ALL SELECT the_geom, name,"AS type,"as description,"as unitcode FROM arch_trailheads UNION ALL SELECT the_geom, bldg_name,"AS type,"as description,"as unitcode FROM arch_restrooms UNION ALL SELECT the_geom, name,"AS type,"as description,"as unitcode FROM arch_parking UNION ALL SELECT the_geom, name,"AS type ,"comme description,"comme unitcode FROM arch_campgrounds

Le résultat contiendrait

the_geom, nom, type, description, unit_code

Je suppose que type, nom, description et unit_code sont tous des variables de type texte. Vous pouvez garder une trace de la table d'où proviennent vos lignes en incluant manuellement une colonne finale qui inclut uniquement le nom de la table aliasé à une colonne. Par exemple.

SELECT the_geom, name, type,"AS description, unit_code, 'points_of_interest' as source_table FROM points_of_interest UNION ALL SELECT the_geom, altname,"AS type, descriptio, unitcode, 'arch_visitor_centers' as source_table FROM arch_visitor_centers UNION ALL SELECT," the_geom, AS type,"as description,"as unitcode, 'arch_trailheads' as source_table FROM arch_trailheads UNION ALL SELECT the_geom, bldg_name,"AS type,"as description,"as unitcode, 'arch_restrooms' as source_table FROM arch_restrooms UNION ALL SELECT the_geom, name ,"AS type,"comme description,"comme unitcode, 'arch_parking' comme source_table FROM arch_parking UNION ALL SELECT the_geom, name,"AS type,"comme description,"comme unitcode, 'arch_campgrounds' comme source_table FROM arch_campgrounds

Combiner plusieurs lignes en un seul groupe de lignes par colonne spécifique

J'aimerais pouvoir combiner toutes ces données lorsqu'elles ont le même identifiant.

Ce qui ressemblerait à ceci :


Voir la vidéo: How to measure distance and area on google maps