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
운영게시판
최근게시물
MS-SQL Q&A 4373 게시물 읽기
No. 4373
도서검색처럼 구현
작성자
김경원(cabin0911)
작성일
2008-07-31 20:05
조회수
4,734

도서 검색 처럼 구현을 할려고 합니다.

조건을 통해 and 와 or이 들어갈 겁니다.

or 경우에는 unino으로 처리하면 되는데..

and의 경우와 or, and 가 같이 쓰일 경우에는 어떻게 해야할지 모르게습니다.


T_USER -  (U_ID, U_NAME)
T_LICENCE_USER -  (TL_CODE(코드), U_ID) - 자격증
T_TRAINING_USER -   (TT_REC_NO(코드), U_ID) - 해외연수
T_INTERNSHIP_USER -  (TI_SUBJECT(코드), U_ID) - 인턴쉽


조건문은 자격증 취득 AND 해외연수 OR 인턴쉽 또는 자격증 취득 OR 해외연수 AND 인턴쉽 이렇게 조건 검색이 되어 있습니다.

하루종일 생각을 해봐도 답이 안 나오네요..

고수님들의 답변 부탁드립니다.


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

연산자의 우선수위에 따라 AND는 조인으로 OR는 UNION으로 차례로 해 주셔야겠군요.
이런 설계의 가장 큰 문제는 조건이 바뀔때마다 쿼리가 수시로 바뀌어야 한다는 것이죠...
또 만약 이 이외의 코드가 늘어나면 테이블을 또 추가하고 조건에 따라 SQL을 또 변경하실건가요?

이런 현상들은 자격증, 해외연수, 인턴쉽들을 아래 설계처럼 변경하면 간단히 해결되는 일입니다.


-- 통합코드
T_CODE
    (
    COMM_CD --> 자격증, 해외연수, 인턴쉽 등의 구분코드
    COMM_CD_NM --> 각 코드의 명칭
    )

-- 자격증, 해외연수, 인턴쉽 통합관리
T_USER_INFO
    (
    CL_CD --> 자격증, 해외연수, 인턴쉽 등의 구분코드(통합코드의 COMM_CD)
    TL_CODE --> 각 테이블에 있던 코드를 통합관리
    U_ID
    )

위 처럼 설계되었다면 질문의 요건은 아래처럼 쿼리하면 됩니다.
SELECT *
FROM T_USER_INFO
WHERE CL_CD = 자격증 취득
  AND CL_CD = 해외연수 
   OR CL_CD = 인턴쉽 
   OR CL_CD = 자격증 취득 
   OR CL_CD = 해외연수 
  AND CL_CD = 인턴쉽
요건이 부정확한 부분이 있으니 연산자간의 우선순위는 괄호등을 통해 정확히 정리하면 되겠죠?

성시현(finecomp)님이 2008-08-01 10:56에 작성한 댓글입니다.

AND 와 OR가 있을경우는 가로로 묶여주셔야지염.. 어디쪾이 OR인지 AND인지 지금 보면 구분이 애매모호하네염


----

조건문은 자격증 취득 AND 해외연수 OR 인턴쉽 또는 자격증 취득 OR 해외연수 AND 인턴쉽 이렇게 조건 검색이 되어 있습니다.

-----


자격증취득 AND (해외연수 OR 인턴쉽 OR 자격증 취득 OR 해외연수) AND  인턴쉽 ?? 어디서부터 OR AND를 묶여야할지 감도 안잡히네염

임진표(운가라)님이 2008-08-01 10:57에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4376TOP을 이용한 page 분할 [1]
이달형
2008-08-01
4847
4375DB 복원 하는 방법 가르켜 주세요 [3]
서성진
2008-08-01
4854
43741억 건의 데이타 조회- 구조/어떻게 해야 좋을까요? [1]
고민중
2008-07-31
4968
4373도서검색처럼 구현 [2]
김경원
2008-07-31
4734
4371윈도우서버에 MSSQL? 아니면 MYSQL? [2]
사슴
2008-07-31
4999
4370특정테이블에 조회(select)한 로그를 남기고 싶어요. [1]
Kaien
2008-07-31
4813
4368테이블 최정 업데이트,인서트 시간을 알수있을까요?
우짜라
2008-07-30
5062
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다