SQL query문 해석해주세요 -_-

urmajest의 이미지

이걸 어떻게 하면 체계적으로 이해할 수 있는지 모르겠네요

우선 relation은

STUDENT([u]SID[/u], Name)

CLASS([u]ClassName[/u], Time, Room)

ENROLLMENT ([u]SID[/u], [u]ClassName[/u], PositionNumber)

우선 STUDENT는 학생의 정보 테이블, CLASS는 수업정보 테이블 입니다.

그리고 ENROLLMENT는 STUDENT와 CLASS의 intersection relation이라고

볼 수 있겠네요(STUDENT와 CLASS의 Primary key를 reference하는 Foreign key를 가지고 있죠.)

쿼리문은 이것입니다.

SELECT  STUDENT.Name
FROM     STUDENT
WHERE   NOT EXISTS
              ( SELECT     *
                 FROM      CLASS
                 WHERE   NOT EXISTS
                          ( SELECT    *
                             FROM     ENROLLMENT
                             WHERE   CLASS.ClassName = ENROLLMENT.ClassName
                              AND    ENROLLMENT.SID = STUDENT.SID));

이 쿼리문이 무엇을 의미하는지는 알고 있는데 읽는 분들의 재미를 위해

우선은 밝히지 않겠습니다 ^^

제 머리로는 도저히 이해가 되질 않는군요 -_-

P.S. 자유게시판에 올려도 괜찮겠죠?

fender의 이미지

해당 학생이 수강신청을 한 기록이 없는 강의의 기록이 없는 학생이니...

모든 강의에 수강 신청한 학생 명단인가요? -_-a

아... sql 시로... -_-;;

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

우수한의 이미지

제대로 개설된 수업을 하나라도 신청한 학생을 뽑는거 아닌가요?
(쿼리문은 좀 아닌 것 같지만....)
이게 왜 자유게시판에 올라오는건지 (재미있는건지)
제 머리로 이해가 되질 않네요. :?

우수하지 않아요. '우수한'은 옛날 만화 CityHunter에서 따와서 쓰던 별명. ;-)

nachnine의 이미지

재미 하나도 없는데요.

이해가 안되는게 제 실력이 부족한건지,

SQL 이 잘못된것인지.

모르겠군요 ( 전자이길 바랍니다. )

어떤 뜻인지 모르겠지만

똑같은 result를 return 하는 훨씬~ 가독성 높은

SQL 이 존재할 겁니다.

=======

select ceil ( no / 2 ) ,
max( decode ( mod( no , 2 ) , 1 , user_uid ) ) ,
max( decode ( mod( no , 2 ) , 0 , user_uid ) )
from(
select
user_uid,
rownum no
from (
select distinct user_uid
from usertable
)
)
group by ceil ( no /2 )

이게 훨씬더 재밌겠는데요 ? ^^

impactbar의 이미지

1.SELECT * FROM ENROLLMENT WHERE CLASS.ClassName = ENROLLMENT.ClassName AND ENROLLMENT.SID = STUDENT.SID
ENROLLMENT 중에 학생과 반이 있는 것만 가져오기

2.SELECT * FROM CLASS WHERE NOT EXISTS (위의 1)
CLASS 중에 위의 1이 아닌 것만 가져오기 (강의가 없는 클래스)

3.SELECT STUDENT.Name FROM STUDENT WHERE NOT EXISTS (위의 2)
STUDENT 중에 2가 아닌 학생만의 이름 가져오기 (강의가 있는 클래스)

그냥 정상적 학생을 말하는가. 걍 수강신청한 학생을 말하는 것 같 습니다.

urmajest의 이미지

답변 감사드립니다..

해석은 fender님이 맞게 하셨네요

모든 강의를 수강신청한 학생의 명단을 불러오는 것이죠

아직 저런 쿼리문이 어떤 순서로 처리가 되는지 잘 모르겠네요

머리만 아프구 -_-

그럼 ^^

ㅡ,.ㅡ;;의 이미지

제가볼때는 모든 수강신청한 학생의 명단이 아니라..

제대로된수업 신청한 학생이나 수업을 하나도 신청하지 않은사람 의 명단으로 보이는데요..

즉, 비정상 수업을 신청한사람이 아닌학생 으로 보이는데요..


                          ( SELECT    * 
                             FROM     ENROLLMENT 
                             WHERE   CLASS.ClassName = ENROLLMENT.ClassName 
                              AND    ENROLLMENT.SID = STUDENT.SID));

이부분이 제대로된 수업 들이란 뜻이되죠..학생이 강의실의 자리까지 배정받았으니까요..

             ( SELECT     * 
                 FROM      CLASS 
                 WHERE   NOT EXISTS 

이부분이 한명이라도 제대로 신청한 학생이 있는수업이 아닌강의
즉, 신청한사람이 없거나 신청해도 강의실조차 없는 수업이죠..

SELECT  STUDENT.Name 
FROM     STUDENT 
WHERE   NOT EXISTS 

마지막으로 그런 수업을 신청한 적이 없는 학생 ...
한명도 신청한 사람이 없는 강의..란뜻이지.. 하나의 강의도 신청한적이 있는 학생 이란뜻이 아니자나요...
그러니까 현제까지 비정상적인 수업신청한적이 없는학생을 의미하는것

즉, 아직 수강신청을 하나도 안했는 사람과 정상적인 수강신청을 한 학생들이 출력이 될것으로 보이는데요..


----------------------------------------------------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.