Jak převést CTE, aby vnořené SELECT

0

Otázka

mám níže vyslán dotaz. chtěl bych použít vnořené SELECT prohlášení místo CTE. chtěl bych mít vnější SELECT prohlášení, ve kterém uvádí sloupce, které jsou obsaženy v tabulce grid_cell_data nechci používat j.* chci použít názvy sloupců místo

dotaz:

WITH j AS (
 SELECT
   ST_AsMVTGeom(
     st_geomfromtext(geometryofcellrepresentativetobuffer),
     ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096,4096)))
 FROM grid_cell_data where id = 3
)
SELECT ST_AsMVT(j.*) FROM j

grid_cell_data stůl

CREATE TABLE IF NOT EXISTS IF NOT EXISTS grid_cell_data (
   id SERIAL PRIMARY KEY,
   isTreatment boolean,
   isBuffer boolean,
   geometryOfCellRepresentativeToTreatment geometry,
   geometryOfCellRepresentativeToBuffer geometry 
)
1

Nejlepší odpověď

1

Stačí jen vybrat všechny záznamy, které potřebujete v CTE/Poddotaz a v vnějšího dotazu, můžete pokračovat v používání j nebo j.*. V případě, že potřebujete další vyberte konkrétní sloupce, umístěte je mezi závorky v SELECT,, tak, že to představuje záznam pro ST_AsMVT, např.

WITH j AS (
 SELECT *,
   ST_AsMVTGeom(
     st_geomfromtext(geometryofcellrepresentativetobuffer),
     ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096,4096))) AS mvt_geom
 FROM grid_cell_data where id = 3
)
SELECT ST_AsMVT((id,isTreatment,isBuffer,mvt_geom)) 
FROM j  
2021-11-18 11:03:54

mohl byste, prosím, řekni mi, proč potřebujeme (( a )) pro st_asmvt?vím, že to se sebou není samostatný argument..je to jak postgresql převede argumenty na řadě?
LetsamrIt

je možné nahradit první * se sloupy mého zájmu?
LetsamrIt

@LetsamrIt první otázka: sloupce odděleny čárkami v závorkách znamená record, což je to, co funkce očekává. druhá otázka: ano, to je možné. můžete udělat to v obou směrech
Jim Jones

myslíš mezi dvojité závorky (( )) není mezi jeden, ia m jsem pravdu?
LetsamrIt

@LetsamrIt vnitřní závorky patří k záznamu a vnější ty funkce sám
Jim Jones

mohu přidat další řešení soultion vás informovat?
LetsamrIt

nevím, jestli tuto otázku pro vás, nebo to je z tvé odborné znalosti:stackoverflow.com/questions/70106991/...
LetsamrIt

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................