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
운영게시판
최근게시물
MySQL Q&A 29298 게시물 읽기
No. 29298
서브쿼리에 대해서 질문좀 드릴게요...
작성자
Deck
작성일
2009-09-11 12:19ⓒ
2009-09-11 12:27ⓜ
조회수
5,655

안녕하세요


서브쿼리 사용지 자꾸 

[서브쿼리가 1개 이상의 결과를 리턴합니다]라는 에러메시지가 뜹니다...

왜 이런 메시지가 뜰까요?? 그러니까 제가 의도한바대로 1개 이상의 결과를 리턴하는게 맞는데 왜 에러로 처리해놨을까요...??
제가 db에 내공이 약해 질문좀 드립니다 ㅠㅜ

먼저 game 테이블이 있구요
id, location, opp_team, date(경기날짜) 등등 칼럼이 있습니다


그리고 game_result(게임결과) 테이블이 있고
game_id(게임테이블의 id를 외래키로 줬습니다..),  result(승무패)... 등등이 있습니다


이제 날짜별로 구해서 예를 들면 2009년의 게임결과를 구하려고 합니다... 2009년 후반기의 경기결과가 몇승인가??

..를 구하려 다음과 같이 작성했습니다


select count(*) from game_result where game_id=(select id from game where date>'2009-06') and result='승'


그런데 위에 말슴드린 1개 이상의 결과를 리턴하는 서브쿼리...라는 에러가나옵니다...ㅠㅠ

제가 의도한 결과가 나오려면 어떻게 고쳐야 하는지좀 알려주세요


감사합니다!

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

안녕하세요 

select count(*) from game_result where game_id=(select id from game where date>'2009-06') and result='승'

원하시는 결과를 얻으시려면 

where game_id=(select id from game where date>'2009-06')
=> where game_id in (select id from game where date>'2009-06')
이렇게 변경하시면 될것 같습니다.

수고하세요

구광모(kkm0802)님이 2009-09-11 15:59에 작성한 댓글입니다.

안녕하세요 박성원입니다. 


서브쿼리를 사용할 경우 "하나이상의 행이 리턴" 된다는 말은 앞의 쿼리와 뒤에 쿼리를 이어주는 등호에 문제가 발생할 경우 입니다. 


즉, select id from game where date>'2009-06' 의 하위쿼리는 다수의 id를 리턴하게 되어있습니다. 

예를 들면 

{1, 2, 3, 4..... 100}

을 리턴한다고 치면 상위 쿼리는 or 로 묶어 줘야한다는 것이죠 

즉, =는 1:1 매치입니다. 

or를 이용할 경우 a=1 or a=2 or a=3..... or a=100 이 되겠지요 

이것을 하나로 표기하는것이 in이라는 부등호입니다. 

a in (1,2,3,....100)

으로 처리하면 됩니다. 


정리하면 말씀해 주신 쿼리를 


select count(*) from game_result where game_id in (select id from game where date>'2009-06') and result='승'


으로 수정하면 정상적으로 동작합니다. 


sytex에 대한 내용만 확인하느라 테이블의 소개는 읽지 않았습니다. 

만약 문제가 발생한다면 댓글 부탁드립니다.

박성원(darkancia)님이 2009-09-11 16:00에 작성한 댓글입니다.

와 그렇군요...

두분다 친절한 답변들 감사합니다

Deck님이 2009-09-11 17:18에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29302euckr -> utf8변환시 iconv 변환 오류 [5]
흥흥흥
2009-09-14
9485
29300MS Acess처럼 외래키로 여러값을 받을 수 있을까요?? [1]
Deck
2009-09-12
5818
29299프로시저가 뭔지 궁금합니다 [2]
Deck
2009-09-11
6885
29298서브쿼리에 대해서 질문좀 드릴게요... [3]
Deck
2009-09-11
5655
29297여러테이블 연결해서 조회하는 쿼리문 문의 입니다. [1]
김선아
2009-09-10
5803
29286데이타를 원하는대로 출력하고 싶은데요.. 잘 안되서요 ㅜㅜ [1]
goooooo
2009-09-09
5306
29285procedure 한글입력문제 [3]
조원준
2009-09-09
8758
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다