솔찍한 고백. 0 3 4,305

by fannyabc join [2010.04.02 09:50:19]


다시올려 드립니다 .
아 어제 올린 자료는 ,, 제가 묻고 싶던건 아이고 ,  ,약간 변경을 해서., . .
왜냐면 ,, 제가 이런 예제를 올려도 되나 하는 마음에 . . .[저작권 문제 등등 -_-'''] 

네 그럼 다시 좀 읽어주세요 고수님들 ^ ^




쪼인 과제 .

여기는 과제 테이블A과
각 연구원 테이블B가 있습니다.


A
과제no. 하위과제no.(null도 가능) 책임연구원no.
----------------------------------
10 1010 1234
10 1020 1234
10 1030 1234
10 1040 1234
1010 null 1001
1020 null 1002
1030 null 1003
1040 null 1004
20 2010 2345
20 2020 2345
20 2030 2345
20 2040 2345
2010 null 2001
2020 null 2002
2030 null 2003
2040 null 2004

뜻은 ,, 10번 과제는 1010, 1020,1030,1040번의 하위 과제를 가지고 있고 책임연구원은 1234이다.

그리고 

B
책임교수no. 소속코드
----------------------------------
1001 01
1002 02
1003 01
1004 02
1234 01
2001 02
2002 03
2003 01
2004 02
2345 03

뜻은, 1001번 교수님의 소속은 01이다. 



자 그럼, 제가 원하는 레코드는,, 

하위과제를 가진 과제들 중,,

과제의 책임연구원의 소속은 01이면서, 
그 하위과제의 책임연구원의 소속은 02인 과제를 찾아라! 입니다. 


이게 가능한지요 ??? ?? 


select A from A, B where 어쩌고 저쩌고 , , ,, , [컨트롤 엔터] 

->
10 1020 1234
10 1040 1234
이런 결과를 낳는 쿼리문을 좀 작성해 주세요  T^T 
by v상이v [2010.04.02 11:15:39]
WITH A AS (
SELECT '10' 과제NO,'1010' 하위과제NO,'1234' 책임연구원NO FROM dual UNION ALL
SELECT '10','1020','1234' FROM dual UNION ALL
SELECT '10','1030','1234' FROM dual UNION ALL
SELECT '10','1040','1234' FROM dual UNION ALL
SELECT '1010',null,'1001' FROM dual UNION ALL
SELECT '1020',null,'1002' FROM dual UNION ALL
SELECT '1030',null,'1003' FROM dual UNION ALL
SELECT '1040',null,'1004' FROM dual UNION ALL
SELECT '20','2010','2345' FROM dual UNION ALL
SELECT '20','2020','2345' FROM dual UNION ALL
SELECT '20','2030','2345' FROM dual UNION ALL
SELECT '20','2040','2345' FROM dual UNION ALL
SELECT '2010',null,'2001' FROM dual UNION ALL
SELECT '2020',null,'2002' FROM dual UNION ALL
SELECT '2030',null,'2003' FROM dual UNION ALL
SELECT '2040',null,'2004' FROM dual
),
B AS (
SELECT '1001' 책임교수NO, '01' 소속코드 FROM dual UNION ALL
SELECT '1002','02' FROM dual UNION ALL
SELECT '1003','01' FROM dual UNION ALL
SELECT '1004','02' FROM dual UNION ALL
SELECT '1234','01' FROM dual UNION ALL
SELECT '2001','02' FROM dual UNION ALL
SELECT '2002','03' FROM dual UNION ALL
SELECT '2003','01' FROM dual UNION ALL
SELECT '2004','02' FROM dual UNION ALL
SELECT '2345','03' FROM dual
)
SELECT a1.*
FROM (
SELECT 과제NO
,하위과제NO
,책임연구원NO
FROM a
WHERE a.책임연구원NO IN (SELECT 책임교수NO FROM b WHERE 소속코드 = '01')
AND a.하위과제NO IS NOT NULL
) a1,
a a2
WHERE a1.하위과제NO = a2.과제NO
AND a2.책임연구원NO IN (SELECT 책임교수NO FROM b WHERE 소속코드 = '02')


단순하게 생각했는데...
맞는지 모르겠네요...ㄷㄷ

by fannyabc [2010.04.02 11:45:21]
아 . ..이렇게 하니깐 되더라는 ^ ^

select c.resno , d.resno from
(select a.* from kiro a, (select * from kirocode k where k.addr = '02') b where a.prof = b.prof and a.resno2 is null ) c,
(select a.* from kiro a, (select * from kirocode k where k.addr = '01') b where a.prof = b.prof and a.resno2 is not null ) d
where c.resno = d.resno2

감사합니다 '상이'님 !

by 누크 [2010.09.27 17:59:31]
흠...늦었지만 나라면 어떻게 했을까 싶어서 안보고 짰는데

select a1.* from a a1,a a2,b b1, b b2
where a1.책임연구원NO = b1.책임교수NO
and a1.하위과제NO = a2.과제NO
and a2.책임연구원NO = b2.책임교수NO
and b1.소속코드 = 01
and b2.소속코드 = 02

정도로 했는데 다른분들 짠거보니 좀더 열심히 해야겠다는 생각이 드네요 ㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입