Hola lista, acabo de toparme con una situación que me llamó la atención, no si postgresql se está comportando como debiera por lo que les expongo para ver si alguien puede replicar esta situacion. Una sentencia que a mi modo de parecer debería devolver un error de SQL debido a la inexistencia de una columna en una subconsulta, corre perfectamente tomando la columna de la consulta principal.
-- Dado el siguiente esquema: CREATE SCHEMA test; CREATE TABLE test.rubros( id character varying(3) NOT NULL, rubro character varying(35), CONSTRAINT rubros_pkey PRIMARY KEY (id) ) WITH (OIDS=FALSE); INSERT INTO test.rubros VALUES ('1', 'Rubro 1'); INSERT INTO test.rubros VALUES ('1.1', 'Rubro 11'); INSERT INTO test.rubros VALUES ('2', 'Rubro 2'); INSERT INTO test.rubros VALUES ('2.1', 'Rubro 21'); CREATE TABLE test.valores( id serial, rubroid character varying(3), descripcion character varying(30), monto float, CONSTRAINT valores_pkey PRIMARY KEY (id) ) WITH (OIDS=FALSE); INSERT INTO test.valores (rubroid,descripcion, monto) VALUES ('1.1','JAMON',100); INSERT INTO test.valores (rubroid,descripcion, monto) VALUES ('1.1','PALETA',200); INSERT INTO test.valores (rubroid,descripcion, monto) VALUES ('2.1','PEBETE',10); INSERT INTO test.valores (rubroid,descripcion, monto) VALUES ('2.1','GALLETA',20); --la siguente consulta debería devolver un error ya que la tabla test.rubro no tiene una columna descripcion. Sin embargo corre perfectamente tomando los valores de la columna descripcion de la tabla test.valores. SELECT (SELECT descripcion FROM test.rubros WHERE rubros.id=substr(valores.rubroid,1,1)) as rubro, * FROM test.valores; --devuelve "rubro";"id";"rubroid";"descripcion";"monto" "JAMON";1;"1.1";"JAMON";100 "PALETA";2;"1.1";"PALETA";200 "PEBETE";3;"2.1";"PEBETE";10 "GALLETA";4;"2.1";"GALLETA";20 -- Espero comentarios, se que debería haber utilizado el alias de test.rubros en la subconsulta y utilizo la subconsulta para obtener el rubro padre de cada fila. Podria usar un join o un where si, pero me salió así y me encontré con este problema. Saludos. -- "La pregunta no debería ser ¿Por qué Dios permite esto?, si no ¿Por qué Dios permite que yo permita esto?" -- TIP 7: no olvides aumentar la configuración del "free space map"