database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6420 게시물 읽기
No. 6420
8.1 에서 add_missing_from??
작성자
장효순(icastone)
작성일
2005-11-15 10:16ⓒ
2005-11-15 11:01ⓜ
조회수
6,244

8.1이 release 되었다길래.. 한번 깔아봤습니다.

그런데.. 잘 작동하던 plpgsql function 에서 아래와 같은 에러가 나더군여..

 

ERROR: missing FROM-clause entry for table "table name"

 

그래서 좀 찾아 봤더니..

8.1 release notes 에 이것에 관한 내용이 있더군여....

add_missing_from 값을 default false 로 해 놨다고...

8.0.4 run-time configuration 에 보면 SQL-standard 도 아니고.. 실수도 유발할수 있어 이렇게 했다는군요..

 

근데.. 문제는 제가 쓰던 SQL 이 에러가 나는데.. 전 이게 SQL-standard 인줄 알고 사용하던 건데..

아니였나 봅니다.. ㅡㅡ;; 그럼 어케 써야 하는거지.

 

아래는 test 했던 내용입니다.

CREATE TABLE test1 ( number int2 , member_id varchar(20) ) ;
CREATE TABLE test2 ( number int2 , member_id varchar(20) ) ;

INSERT INTO test1 VALUES('1','아이디1') ;
INSERT INTO test1 VALUES('2','아이디2') ;

INSERT INTO test2 VALUES('1','아이디3') ;
INSERT INTO test2 VALUES('2','아이디4') ;


SELECT * FROM test1 ;

 number | member_id
--------+-----------
      1 | 아이디1
      2 | 아이디2
(2 rows)

SELECT * FROM TEST2 ;

 number | member_id
--------+-----------
      1 | 아이디3
      2 | 아이디4
(2 rows)


 

위와 같이 만들고...

 


SELECT test1.*, test2.* FROM test1 WHERE test1.number = test2.number AND test1.number = 1 ; ERROR: missing FROM-clause entry for table "test2"
위 구문이 에러 나는 것은 이해 하겠습니다. from 절에 table 명이 바졌으니.. 수정하면 아래와 같이 되겠지요.. SELECT test1.*, test2.* FROM test1, test2 WHERE test1.number = test2.number AND test1.number = 1 ; number | member_id | number | member_id --------+-----------+--------+----------- 1 | 아이디1 | 1 | 아이디3


 

머 위의 예제는 충분히 알겠는데.... 저도 위에 처럼.. table 명을 빼고 쓰지는

않으니.. (실수로 빼먹는 경우는 꽤 있을지도 모르겠네여. ;;)

 

아래 구문도 에러가 난다는 것이 문제인데.. 전 이게 정상적인 구문인줄 알고 있었는데..

아니였나 봅니다. ㅡㅡ;; 그럼 어떻게 써야 하는지..??

 

 


UPDATE test1 SET member_id = test2.member_id WHERE test2.number = test1.number AND test1.number = 1 ;
ERROR: missing FROM-clause entry for table "test2"


이 글에 대한 댓글이 총 3건 있습니다.

조건절위에 from절을 넣어주면 되겟죠

 

오라클 8.0x에서는 from절이 없어서 서브쿼리로 했던기억이 남니다.

 

ㅎㅎ님이 2005-11-15 10:48에 작성한 댓글입니다. Edit

아.. 그렇군여. ㅡㅡ;;

 

UPDATE test1 SET member_id = test2.member_id 

        FROM test2
        WHERE test2.number = test1.number AND
              test1.number = 1 ;

 

이렇게 하면 되네여.. .. 음.. SQL-standard에는 이렇게 정의 되어

있나 보군여.. 감사합니다. ~ ^^

 

 

장효순(icastone)님이 2005-11-15 11:01에 작성한 댓글입니다.
이 댓글은 2005-11-15 11:01에 마지막으로 수정되었습니다.

음~ 저도 위와 비슷한 쿼리가 왜 안되나

고민하고 있었는데, 이글을 참고해서

해결했습니다..^^

혹시 팜팜의 장효순님 아니신가요? ^^;

장현성(siche)님이 2005-11-15 12:43에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6424progress DB odbc 드라이버 구합니다. [2]
라원상
2005-11-16
3268
6422[긴급문의] Progress DB 관련 [1]
김진우
2005-11-15
2588
6421다른 DB의 테이블을 조인 할 수는 없나요?? [2]
김종섭
2005-11-15
2677
64208.1 에서 add_missing_from?? [3]
장효순
2005-11-15
6244
6418pgsql.so 파일에 관하여.. [1]
한종희
2005-11-14
3023
6417댓글로 쓰기에 양이 많아서 다시 올립니다 [1]
김이수
2005-11-13
2484
6414어찌하면 빨라질까요? 인덱스를 안쓰는거 같은데... [3]
김이수
2005-11-11
4009
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다