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 27234 게시물 읽기
No. 27234
join on 조건과 where 조건에 대해서 질문드립니다.
작성자
박기훈
작성일
2007-12-07 20:49ⓒ
2007-12-07 21:11ⓜ
조회수
2,610

mysql 5.0.x 버전입니다.


a_a table

--------

a_seq  : 자동증가 시퀀스

u_seq : 회원 시퀀스 넘버

is_open : 1 or 2 or 3




a_b table

--------

a_seq  : a테이블의 자동증가 시퀀스

s_seq : 특정 값




라는 두개의 테이블이 있습니다.


1라는 회원의


a테이블의 is_open이 0이거나 1인것의 값을 가져오는데


0일경우에는 b테이블 s_seq의 값이 어떤것이라도 상관없지만


1일경우에 b테이블 s_seq가 2 or 3일 경우의 값을 가져와야 합니다.



쿼리문으로


SELECT *

FROM a_a AS a

INNER JOIN a_b AS b ON a.a_seq = b.a_seq

WHERE

a.u_seq = 1 and

a.is_open =0

OR (

a.is_open =2

AND b.s_seq

IN ( 2, 3 )

)

)

가 맞나요?


어떻게 질의 해야하나요?



where절의 조건과

on절의 조건이 무슨차이를 가지고 있는지도 알고 싶어요

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

http://dev.mysql.com/doc/refman/5.1/en/join.html

일단 join에 대해서는 위의 링크를 다 읽어보시는게 좋지만, 더 간략하게 정리된 문서들도 많습니다.

 

http://www.igotit.co.kr/zbxe/BRD_MY_SQL/3468

검색해보니 위과 같이 이해하기 쉬운 문서도 있군요.

 

작성하신 SQL 구문은 올바르게 보입니다.

작성하신 것과 같은 join으로 하지 않고, full join( 그냥 from a_a as a, a_b as b ) 이후 where절에서 조건을 줄 수도 있는데, 그러면 메모리 사용과 시간면에서 불리하겠지요. 자세한 것은 위의 도움말들을 읽어보시면 아실 수 있습니다.

 

( 요즘 엔진들은 쿼리 최적화를 잘 해줘서 대충 써도 잘 해줄지 그건 잘 모르겠네요 )

박현우(lqez)님이 2007-12-10 14:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27237현재접속자를 쓰려고 하는데.... [1]
박진화
2007-12-09
2914
27236덤프 후 느려지는 문제---> Index? [1]
권순원
2007-12-08
2585
27235Mysql 과 GFS clustering ?
임경식
2007-12-07
2858
27234join on 조건과 where 조건에 대해서 질문드립니다. [1]
박기훈
2007-12-07
2610
27233디비접속에러
박윤선
2007-12-06
2303
27232update문 이렇게 쓰는거 아니에요?? [3]
koala
2007-12-06
2580
27230테이블 생성시에 PRIMARY KEY [1]
김지명
2007-12-06
2461
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다