Обсуждение: How To Use JOIN?
Hello PGSQL users, I'm having trobule using join statement: I've created two tables and trying to compare contents of two tables and receive results which found on two tables equaled. ------Here's what I did ------ 1. I create two tables: create table test1 ( name_1 varchar(10), code_1 int )\g create table test2 ( name_2 varchar(10), code_2 int )\g 2. Entered sample data: insert into test1 values ( '10', 1) \g insert into test1 values ( '11', 2) \g insert into test2 values ( '11', 1) \g insert into test2 values ( '11', 2) \g 3. Now after that worked without any problem, so I now create SELECT statement: select * from test1 test2 where code_1 = test.code_2 \g ERROR: attribute 'code_2' not found nope that didn't work select test1.name_1 from test1 test2 where test1.code_1 = test2.code_2 \g ERROR: attribute 'code_2' not found Umm... still no change. ------ Mmm... Any ideas? If I can get value of test1.name_1 which also had equal value on code_1 and test2.code_2, I'll solve my trouble. It shouldn't be that complex but it's been driving me nuts for few hours. I'm using postgresql-6.3.2 under FreeBSD 2.2.6. Thanx in Advance, Takashi
At 18:05 +0200 on 17/11/98, Takashi Tokunaga wrote: > 3. Now after that worked without any problem, so I now create SELECT > statement: > > select * from test1 test2 where code_1 = test.code_2 \g > ERROR: attribute 'code_2' not found > > nope that didn't work > > select test1.name_1 from test1 test2 where test1.code_1 = test2.code_2 \g > ERROR: attribute 'code_2' not found You seem to have forgotten a comma... SELECT * FROM test1, test2 <---- Here WHERE code1 = code2; if you don't put a comma, "test2" will be used as an alias to "test1", not as a table on its own. Herouth -- Herouth Maoz, Internet developer. Open University of Israel - Telem project http://telem.openu.ac.il/~herutma
Takashi Tokunaga wrote: >Hello PGSQL users, I'm having trobule using join statement: >3. Now after that worked without any problem, so I now create SELECT > statement: > > select * from test1 test2 where code_1 = test.code_2 \g > ERROR: attribute 'code_2' not found > >nope that didn't work > > select test1.name_1 from test1 test2 where test1.code_1 = test2.code_2 \g > ERROR: attribute 'code_2' not found > >Umm... still no change. junk=> select * from test1, test2 where code_1 = test2.code_2 junk-> ; name_1|code_1|name_2|code_2 ------+------+------+------ 10| 1| 11| 1 11| 2| 11| 2 (2 rows) junk=> select test1.name_1 from test1, test2 where test1.code_1 = test2.code_2 ; name_1 ------ 10 11 (2 rows) You omitted the comma between the table names in the FROM clause. -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver PGP key from public servers; key ID 32B8FAA1 ======================================== "For by grace are ye saved through faith; and that not of yourselves. It is the gift of God; not of works, lest any man should boast." Ephesians 2:8,9