Greetings
I did the following excise.
CREATE TABLE product(
productid int PRIMARY KEY,
productname CHARACTER VARYING NOT NULL);
INSERT INTO product values (1,'Pen');
INSERT INTO product values (2,'Pencil');
CREATE TABLE sales(
salesdate date,
product int,
qyt int);
INSERT INTO sales VALUES ('2020-01-22',1,10);
INSERT INTO sales VALUES ('2020-01-22',2,20);
select productid from sales where salesdate='2020-01-22';
ERROR: column "productid" does not exist
LINE 1: select productid from sales where salesdate='2020-01-22'
But the following query will executed
select * from product where productid in (select productid from sales where salesdate='2020-01-22')
Sent from Mail for Windows 10
From: Daniel Gustafsson <daniel@yesql.se>
Sent: Thursday, January 23, 2020 3:25:53 PM
To: selva kumar <selva.logic@hotmail.com>
Cc: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: Re: Query will execute when inner query have issue
> On 23 Jan 2020, at 08:34, selva kumar <selva.logic@hotmail.com> wrote:
>
> Greetings,
>
> We tried query in a following manner.
>
> SELECT * FROM A where A.id IN (SELECT B.id from B);
>
> In the above query Table B does not have id. But this query return all A table records
>
> Note : If we run inner query alone, It throws error like “Field is not found”
This is not reproducible for me, it fails as expected:
db=# select * from a where a.id in (select b.id from b);
ERROR: column b.id does not exist
LINE 1: select * from a where a.id in (select b.id from b);
^
HINT: Perhaps you meant to reference the column "a.id".
Which version of postgres are you using, and how are you executing the query?
cheers ./daniel