그림을 보고 SQL문을 작성후 답안을 검토했는데
문제에서 pid 속성에 대한 언급이 없었는데 WHERE절에 쓰여서 어떤 이유로 쓰인건지 알고싶고
같은 페이지 2번 문제에서도 shopid에 대한 언급이 없었는데 쓰여서 혹시 기본키인건지 쓰인 이유를 모르겠습니다.
------------------------------------------
문제 6번의 검색 결과에 보면 이름으로 내림차순 정렬 되있는거 같은데 답을 보면 정렬조건이 안써있어서요
원래 테이블에는 박지영이 이범용보다 위에 있었는데 정렬조건을 쓰지 않아도 겸색결과가
문제와 같이 나오나요?
---------------------------------------------
122쪽 문제 8번에 저는 SQL 문을 JOIN 구문을 사용하지 않고 하위질의를 써서
SELECT 학교명, 지역
FROM 학교
WHERE 학교명 NOT IN ( SELECT 학교명 FROME 학과 );
이렇게 썼는데 이렇게해도 답이 되나요?
----------------------------------------------
124쪽 11번 문제도 조인하라고 해서 저는 JOIN문을 사용했는데
SELECT 예금계좌.예금번호, 지점.도시
FROM 지점 JOIN 예금계좌 USING 지점명
ORDER BY 예금번호 DESC;
이렇게 써도 답이 되나요?
----------------------------------------------
126쪽 16번 문제에 SQL 문을
SELECT 상호, 총액
FROM 거래내역
GROUP BY 상호, 총액
HAVING MAX(*) 총액;
이 소스는 틀린 답인가요?
안녕하세요.
1)
하위질의를 이용하라는 조건과 함께 기본키와 외래키 형태가 표현되어 있기 때문입니다.
1인쪽이 id이므로 id는 기본키라는 것을 알 수 있고 이에 대응되는 N 쪽의 shopid는 외래키라는 것을 알 수 있습니다.
2)
신청정보 테이블의 신청번호가 기본키로 설정되어 있어 신청번호를 기준으로 자동 정렬이 적용되었습니다.
그래서 별도의 정렬조건을 지정하지 않았어도 신청번호 기준에 따라 이해준(학번2016212060), 이범용(학번2016212054), 박지영(학번2015212022) 순으로 추출된 것입니다.
3)
조인이나 하위질의 사용에 대한 별도의 추가 조건이 없으므로 하위질의로 작성해도 결과는 동일합니다.
4)
조인 속성명이 동일하므로 USING을 이용해도 결과는 동일합니다.
5)
작성하신 SQL문의 의도는
상호와 총액을 그룹으로 지정하여 총액의 최대값과 같은 총액만 추출하려고 하는 것인데,
그런 의도라면 Having 절에서 총액 = Max(총액); 으로 조건을 지정해야 하는데,
수행해 보면 결과는 하나가 아닌 전체 레코드가 추출됩니다.
이는 그룹이 지정된 총액을 대상으로 조건이 적용되기 때문인데,
이게 아니라면 중복된 상호가 없으므로 where 절을 이용해 전체 레코드를 대상으로 해서 그 중에서 최대값을 추출해야 하는데, where 절에는 집계함수를 사용할 수 없으므로 교재와 같이 구성해야만 결과가 산출됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-04-10 15:03:30
안녕하세요.
1)
하위질의를 이용하라는 조건과 함께 기본키와 외래키 형태가 표현되어 있기 때문입니다.
1인쪽이 id이므로 id는 기본키라는 것을 알 수 있고 이에 대응되는 N 쪽의 shopid는 외래키라는 것을 알 수 있습니다.
2)
신청정보 테이블의 신청번호가 기본키로 설정되어 있어 신청번호를 기준으로 자동 정렬이 적용되었습니다.
그래서 별도의 정렬조건을 지정하지 않았어도 신청번호 기준에 따라 이해준(학번2016212060), 이범용(학번2016212054), 박지영(학번2015212022) 순으로 추출된 것입니다.
3)
조인이나 하위질의 사용에 대한 별도의 추가 조건이 없으므로 하위질의로 작성해도 결과는 동일합니다.
4)
조인 속성명이 동일하므로 USING을 이용해도 결과는 동일합니다.
5)
작성하신 SQL문의 의도는
상호와 총액을 그룹으로 지정하여 총액의 최대값과 같은 총액만 추출하려고 하는 것인데,
그런 의도라면 Having 절에서 총액 = Max(총액); 으로 조건을 지정해야 하는데,
수행해 보면 결과는 하나가 아닌 전체 레코드가 추출됩니다.
이는 그룹이 지정된 총액을 대상으로 조건이 적용되기 때문인데,
이게 아니라면 중복된 상호가 없으므로 where 절을 이용해 전체 레코드를 대상으로 해서 그 중에서 최대값을 추출해야 하는데, where 절에는 집계함수를 사용할 수 없으므로 교재와 같이 구성해야만 결과가 산출됩니다.
오늘도 즐거운 하루 되세요.