Q&A

  • select한 결과(복수개)를 가지고 다시 select
안냐세여~ 거두절미하고..



도서관프로그램을 짜보고 있는데요. 간단히 요약하믄..

대출테이블(lend)의 한 레코드가 대출일,책번호,사용자 번호(userNo)가 들어간다고 하고,

사용자 테이블(user)은 사용자번호, 이름이 있다고 칩시다.



이제껏 책을 10권이상 빌려간 사람들의 이름을 뽑아낼려면.. 도대체 어떻게 하믄 되나요?



SELECT userNo,count(userNo) FROM lend GROUP BY userNo

이렇게 한다음 그 결과를 가지고(임시 테이블 temp 로 만든다치고.. 필드는 사용자번호no, 빌린회수count)

SELECT Name FROM user u, temp r WHERE u.no = r.no AND r.count > 10

이렇게 하믄되나요?

임시 테이블을 만들면 속도가 느리지 않을까요?

아님 SQL로 해결할 수 있나요? 아님 딴 방법이 있을까요?



고수님들의 관심어린 조언 부탁합니다.. 그럼..



2  COMMENTS
  • Profile
    신호성 1999.07.03 18:24
    한승협 께서 말씀하시기를...

    > 안냐세여~ 거두절미하고..

    >

    > 도서관프로그램을 짜보고 있는데요. 간단히 요약하믄..

    > 대출테이블(lend)의 한 레코드가 대출일,책번호,사용자 번호(userNo)가 들어간다고 하고,

    > 사용자 테이블(user)은 사용자번호, 이름이 있다고 칩시다.

    >

    > 이제껏 책을 10권이상 빌려간 사람들의 이름을 뽑아낼려면.. 도대체 어떻게 하믄 되나요?

    >

    > SELECT userNo,count(userNo) FROM lend GROUP BY userNo

    > 이렇게 한다음 그 결과를 가지고(임시 테이블 temp 로 만든다치고.. 필드는 사용자번호no, 빌린회수count)

    > SELECT Name FROM user u, temp r WHERE u.no = r.no AND r.count > 10

    > 이렇게 하믄되나요?

    > 임시 테이블을 만들면 속도가 느리지 않을까요?

    > 아님 SQL로 해결할 수 있나요? 아님 딴 방법이 있을까요?

    >

    > 고수님들의 관심어린 조언 부탁합니다.. 그럼..

    >



    위에서 표현한 SQL을 조합하면 되겠군요.(서브쿼리)



    SELECT Name FROM user

    WHERE no in (

    SELECT userNo FROM lend

    GROUP BY userNo

    HAVING COUNT(*) > 10

    )











  • Profile
    시밀레 1999.07.03 15:37
    이렇게 해보세요.

    아래 예는 오라클에서입니다.



    select count(*)

    from lend le,usr us

    where le.userNo = us.userNo





    위에서 count 오라클에서 제공하는 함수입니다.