2012-05-14 3 views
0

동일한 데이터가있는 20 개의 컬럼이 있습니다. Dept_1, dept_2, dept_3 .... 절에 실제로이 열 모두 20 개를 쓰지 않고도 각 열이 일치하는 (의사 코드 : where dept_1, dept_2, dept_3... = 'ACCOUNTING') 데이터베이스를 쿼리하고 싶습니다. 이것을 할 수있는 방법이 있습니까?콜론에 비슷한 데이터가있는 데이터베이스를 쿼리하십시오.

+1

나는 아마도 데이터베이스의 디자인을 다시 생각하게 될 것이다. 당신이하려고하는 것에 대해 더 많이 알지 못한다면, @ mellamokb의 해결책은 아마도 가장 좋은 방법 일 것입니다. 귀하의 질문이 심각한 디자인 결함을 해결하는 방법에 관한 것이기는하지만. – swasheck

+0

swasheck에 동의합니다 :'dept_1'에서'dept_20'까지의 테이블은 잘못된 디자인을 나타냅니다. –

답변

2

나는 데이터베이스의 디자인에 심각하게 의문을 품고있다. 그러나 아마도 이것은 당신이 찾고있는 것일까?

WHERE Dept_1 = 'ACCOUNTING' 
    AND Dept_2 = 'ACCOUNTING' 
    AND Dept_3 = 'ACCOUNTING' 
    ... ad nauseum 
    AND Dept_19 = 'ACCOUNTING' 
    AND Dept_20 = 'ACCOUNTING' 
+0

실제로. 질문은이 모든 것을 타이핑하지 않아도되는 것에 대해 더 많은 것으로 보입니다. – swasheck

+0

예. 나는 이렇게 할 수 있음을 알고 있습니다. 그러나 나는 그 모든 것을 타이핑하고 싶지 않습니다 ... – Mohit224

+0

글쎄, 한번만 해봐야하고, 몇 분 정도 걸릴 것입니다. 이것은 많은 장소 또는 무언가에서 사용됩니까? 저장 프로 시저를 사용하여 부서에서 전달할 수 있으므로 한 위치에이 추한 논리 만있을 수 있습니다. – mellamokb

0

가장 쉬운 방법은 같은 것을 할 수 있습니다 : 당신이 3 개 필드 값이 동일한 데이터를 잡아하려는 경우

SELECT * FROM table 
WHERE dept_1 = 'ACCOUNTING' 
    AND dept_2 = 'ACCOUNTING' 
    AND dept_3 = 'ACCOUNTING' 

또는

SELECT * FROM table 
WHERE dept_1 = 'ACCOUNTING' 
    OR dept_2 = 'ACCOUNTING' 
    OR dept_3 = 'ACCOUNTING' 

이에 따라 달라집니다 또는 필드 중 적어도 하나가 일치 할 때 데이터를 가져올 것인지 여부를 지정합니다.

0

나는이 짧은 버전 사용자에게 쉽게 생각 : 모든 필드가 동일하기

select * 
from table 
where 'ACCOUNTING' in (dept_1, dept_2, dept_3, . . .) 

는 당신이 필요로하는 경우에, AND 연산으로 where 절을 사용합니다.

그러나 각 부서에 대해 별도의 행이있는 테이블을 갖도록 데이터베이스를 다시 디자인 할 수 있습니다.

관련 문제