Actualmente estoy desarrollando una aplicación y encontré un problema al intentar crear una consulta en una tabla que usa un tipo personalizado.
Aquí hay una tabla de ejemplo y tipo,
CREATE TYPE address AS ( street varchar(40), city varchar(25), zip varchar(5) ); CREATE TABLE houses ( id SERIAL PRIMARY KEY, address address );
Necesito recuperar una lista con todas las ciudades almacenadas en las casas de mesa. Esto es lo que traté de hacer:
SELECT address.city FROM houses GROUP BY address.city
Detecta address.city como una tabla. ¿Hay alguna forma de hacer lo que quiero hacer en PostgreSQL?
No usaría un tipo compuesto como ese en una tabla. Pero aún puede hacer esto, use paréntesis.
SELECT (address).city FROM houses GROUP BY (address).city
Para acceder a un campo de una columna compuesta, se escribe un punto y el nombre del campo, como si se seleccionara un campo del nombre de una tabla. De hecho, es tan parecido a seleccionar de un nombre de tabla que a menudo tiene que usar paréntesis para evitar confundir al analizador.
En su lugar, usaría un jsonb
. O, si va a usar un tipo compuesto, debe usar stdaddr
de PostGIS.