드로우홀릭 더베이직
1번 질문
한개의 테이블에 있는 3개의 필드값을 한개의 필드로 합칠수 있나요?
data 테이블
필드1 필드2 필드3
111 222 333
이걸
필드
111
222
333
3개의 필드를 한개의 필드로 합칠수 있나요?
2번 질문
a 테이블
필드1
111
222
333
123
b테이블
num1 num2 num3
111 123 234
222 345 456
a테이블 b테이블
필드1 ----------> num1
|
|---------------> num2
|
|---------------> num3
이 상태일때 a테이블의 필드1 값과 b 테이블의 num1,num2,num3의 필드를 비교하여
a테이블의 필드1에 있는 값들중 b테이블의 num1,num2,num3 필드의 값과 한개라도 중복이 되는 값은 없애고 a테이블의 필드1값을 확인하고 싶은데 가능한가요?
이때 num1,num2,num3의 값은 모두 필요없고 a테이블의 필드1의 값만 필요합니다
조건1. a테이블과 b테이블을 비교하여 c테이블 또는 쿼리로 만듭니다
조건2. c테이블에는 a테이블의 값만 가져와야하고 b테이블과 중복되지 않는 값만 가져와야 합니다
조건3. c테이블에는 b테이블의 값은 가져오면 안됩니다
1번 질문에 대해서 답을 해 드리겠습니다.
테이블 이름이 'data' 라고 했을 때..
다음과 같은 SQL 구문을 만드시면 됩니다.
이런 것을 '통합 쿼리' 라고 합니다. 'UNION 쿼리'라고도 합니다.
2번 질문에 대해서도 답을 드릴 수는 있습니다만.. 그것보다 질문을 실제 테이블 이름으로 해 보심이 좋을 것 같습니다.
지금 질문하는 것은, 일반적인 방식이 아니기 때문에.. 자료 구조 자체에 문제가 있을 수 있기 때문입니다.
그러니까, 예를 들어, a테이블, 필드1 이런식이 아니고, 제품테이블, 제품코드 필드 이런 식이 더 낫습니다.
비즈니스 로직을 같이 검토해 봐야 좋은 해결책이 나오는데, a테이블, 필드1 이런 식이면, 기계적인 생각밖에 할 수 없어서..
좋은 해결책이 나오지 않기 때문입니다.
일단 간단히 답을 해 드리자면..
1번 답변을 이용해서 b 테이블의 num1 ~ num3 까지의 필드를 num 이라는 필드로 만듭니다.
이렇게 만든 쿼리를 q1 이라고 한다면..
a 테이블에서 q1에는 없는 값을 구하면 되는 것이지요?
이것은 다음과 같은 쿼리로 구하면 됩니다.