좋은 강의 만들어주셔서 진심으로 감사드립니다! :) 마지막 세션 강의 들으면서 질문이 하나 있어서 글 남기게 되었습니다! UNION을 활용하여 쿼리를 짜주셨는데, 혹시 UNION을 활용하지 않고 짤 수 있는 쿼리는 없을까요? (GPT에 물어봤는데 제 지식이 짧아서인지 제대로 된 답변을 받지 못했습니다ㅠㅠ) 만약 있다면, 언제 UNION을 활용해서 쿼리를 짜는 것이 좋은지 언제 UNION을 활용하지 않고 쿼리를 짜는 것이 좋은지에 대한 판단은 어떻게 할 수 있을까요~? 문제를 풀어보면서 UNION 없이 쿼리를 짜는 방법을 모르다보니 이 부분에 대한 판단이 안됐었는데요! 결과물을 보니 UNION 없이 쿼리를 작성하면 복잡해질 것 같다는 생각이 들긴 하지만, 실제 비슷한 상황에서는 UNION을 활용하기 보다 한 번에 쿼리를 짜내려고 할 것 같아서 문의드려용!
안녕하세요 김영한님! 강의 아주 잘 듣고있습니다!! 현재 김영한님 첫번째 강의를 다 듣고 저 혼자 만들어보고 싶은게 생겨서 만드는중인데요 현재 제가 군대에 있어서 사지방에서 코딩을 하느라 인텔리제이를 사용하지 못하고 깃허브에서 제공하는 codespaces와 gitpod을 사용하여 vscode 환경에서 코딩하는 중입니다. 근데 jpa의 JpaRepository나 lombok 혹은org.springframework.boot.autoconfigure.SpringBootApplication 이런 패키지들이 계속 does not exist라고 뜹니다. 김영한님꺼 따라할때는 잘 됐는데 이제 제가 혼자서 만들고 싶은거 만드려니 확실하지도 않고 실행도 잘 안돼서 패키지를 못읽는건지도 잘 모르겠습니다. 현재 build.gradle에 의존성도 다 넣어있고 vscode의 패키지 설치에도 java extention pack, lombok, spring extention pack또 다 깔았습니다. 당연 재설치도 해보았구요! 구글링을 지금 며칠째 하고있는데 도저히 안되서 여기에 질문 올려봅니다... springboot version : 3.1.3 jdk version : 17
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 최초로 jdbc:h2:~/test로 연결을 실행 한 뒤 ~/ test.mv .db 파일 생성을 확인하였습니다. 그러고 영한님께서 말씀해주신 대로 jdbc:h2:tcp://l ocalhost/~/test 로 연결했더니 다음과 같은 오류가 발생하네요.. 해결방안 답변해주시면 감사하겠습니다. 참고로 h2 버전은 강의와 같은 버전을 사용하였습니다. +) 추가로 삭제 후 동일버전, 하위버전으로 재설치도 해보았는데 여전히 같은 오류가 발생합니다.
안녕하세요. 현재 JPA강의를 통해 회사내 프로젝트중인 직장인 입니다. 실무 중에 강의의 복합키 매핑과는 조금 다른 내용이 있어 며칠을 고민하다 문의 드립니다. 각각 복합키를 가진 두 개의 테이블 이 있습니다. 두 테이블은 code라는 공통 컬럼이있고 다대일관계로 매핑 을 구성하려고 합니다. @EmbeddedId관계 를 이용해 구성하려고 합니다. code 컬럼만 매핑시키는 방법을 찾지 못해 문의 남겨드립니다. 현재 문제의 테이블입니다.(회사프로젝트 테이블이라 자세히 올려드리는 못하는 점 양해 부탁드립니다.) Company Table은 code, biznumber 두 개의 pk로 구성돼 있습니다. Contract Table 역시 code, module 두 개의 pk로 구성돼 있습니다. 저는 두 테이블에서 code라는 컬럼만 갖고 다대일 매핑 을 구현하고 싶습니다. 즉 복합키를 각각 가진 두 개의 테이블에서 각각 하나의 컬럼만을 이용해 다대일 매핑을 구현하고 싶습니다. 제가 에러 내용과 과정을 올리고싶은데 회사코드라 올리면 문제가 생길까 싶어 이렇게 말로 표현드려 죄송합니다.
아래와 같은 쿼리를 리트코드에 입력하였는데, 계속 오류가 났다고 하는데 어디가 잘못되었는지 알 수 있을까요? 그리고 다른 쿼리는 작성했는데 AND e.salary = dh.max_salary 해당 쿼리는 생각을 못하고 그냥 SELECT 최종구문에서 MAX(Salary)를 뽑아내면 된다고 생각했는데 어떤 부분이 잘못되었는지 알 수 있을까요? 감사합니다. SELECT d.name AS Deparment , e.name AS Employee , e.salary as Salary FROM employee AS e INNER JOIN( SELECT departmentid, MAX(salary) AS max_salary FROM employee GROUP BY departmentid ) AS dh ON dh.departmentid = e.departmentid AND e.salary = dh.max_salary INNER JOIN department AS d ON e.departmentid = d.id
안녕하세요 윈도우 환경에서 work bench 설치 관련하여 문의드립니다. 영상 상으로는 Developer default로 설정해서 설치하는 걸로 되어 있는데 저는 따로 그 옵션이 없습니다. Custom으로 설정해서 pdf 파일에 본대로 똑같이 설치하면 Workbench가 설치가 안되서요 사진 첨부 합니다 확인부탁드립니다..!
안녕하세요, [Group By 절에 가공 컬럼 및 case when 적용 실습] 강의 2:18쯤 나오는 화면인데요, hiredate에서 연도만 추출하고 싶을 때 데이터 타입을 그대로 날짜로 두지 않고 굳이 to_char를 활용해서 문자로 바꿔주는 이유가 무엇인지 궁금합니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 마지막에 beforeEach 메소드를 추가하여 매번 객체를 생성하게 되잖아요. 그러면 굳이 afterEach() 메소드로 매번 clear할 필요가 없다고 생각했었는데 afterEach() 메소드를 주석 처리하면 오류가 나더라고요. 제 생각엔 MemoryMemberRepository의 store 변수가 static이기 때문에 beforeEach() 메소드로 매번 객체를 새로 생성하더라도 static 변수는 새로 생기지 않고 기존의 것이 계속 공유되고 있기 때문에 afterEach()가 필요한 거 아닐까 싶은데 제가 정확히 이해한 게 맞는지, 제 생각에 오류가 있는지 궁금합니다.
특정 문제에 대한 질문이 아니라 강의 학습 중 활용에 관한 질문인데요. 1. 프로그래머스 스쿨과 해커랭크 등에서 배운 내용들을 적용하며 풀고 있는데, 서브쿼리를 사용하겠다는 단서를 파악할 수 있는 방법이 있을까요? 어떤 경우에는 서브쿼리를 사용했는데 왜 서브쿼리를 사용해야하는지마저 떠올리지 못해서 활용을 제대로 못하고 있는거 같습니다. 조인을 할 때 left join과 inner join의 차이 inner join은 보면 null값을 포함하지 않고 left join은 null값을 포함하는 것으로 인지하고 있어서 웬만하면 실수를 줄이기 위해서 left join을 쓰는데 이것도 맞다고 볼 수 있을까요? 긴 글 읽어주셔서 감사합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 강사님 궁금한것이 있어서 질문 남깁니다 public void returnBook(String bookName) { UserLoanHistory targetHistory = this.userLoanHistories.stream () .filter(history -> history.getBookName().equals(bookName)) .findFirst() .orElseThrow(IllegalAccessError::new); //findFist()는 옵셔널로 반홚나다 targetHistory.doReturn(); } 이 로직에서 만약 한 책을 빌렸다가 반납하면 그 히스토리를 반납완료 상태로 만들어주고 끝내고 다시 그 책을 빌리려고 한다면 새로운 히스토리를 만들어서 List에 저장할텐데 그럼 다시 그책을 반납할 경우 findFirst()를 해서 그 히스토리를 찾아왔을때 이미 반납된 책을 다시 반납하는 행위가 되는것이 아닌건지 궁금해서 질문 드립니다!
의존성 조언 두번째 방법에서 문제점이 UserService.login은 여전히 의존성이 감춰져있다. 위와 마찬가지로 Userservice.login을 테스트할 때 clock에 의존하고 있는지 알 수 없다. 이거였는데 세번 째 방법도 UserService를 사용하는 메서드는 login(user)만 남겨서 user가 Clock에 의존하는지 모르지 않나요? 아까 맥도날드 예제에서는 인터페이스를 사용하면 일을 시킨다고 설명하셨는데 이것도 인터페이스를 사용해서 일을 시키는거니 이렇게 구현하면 내부에서 clockHolder를 사용해도 외부에서 몰라도 되나요?
-- 4. 강의별 평균 학점, 꿀강의 TOP 3 조회 SELECT courses.title AS "강의명", ROUND(AVG(grade_points.point), 2) AS "평균 학점" FROM courses JOIN grades ON grades.course_id = courses.id JOIN grade_points ON grade_points.grade = grades.grade GROUP BY courses.title ORDER BY AVG(point) DESC LIMIT 3 ; -- 서브쿼리 이용 답 SELECT courses.title AS "강의명", ggul_courses.round AS "평균 학점" FROM courses JOIN ( -- 강의별_평균학점 SELECT course_id, ROUND(AVG(grade_points.point), 2) FROM grades JOIN grade_points ON grade_points.grade = grades.grade GROUP BY course_id HAVING AVG(point) > ( -- 모든_강의의_평균_학점 SELECT AVG(point) FROM grades JOIN grade_points ON grade_points.grade = grades.grade ) ORDER BY AVG(point) DESC LIMIT 3 ) AS ggul_courses ON ggul_courses.course_id = courses.id ; 일반 JOIN이용과 서브쿼리 이용 결과가 다르게 출력되는데 서브쿼리 안에서 정렬을 했지만 최종 결과는 정렬이 되지 않네요? 왜 그런건가요..? 이러면 JOIN이 더 나은 걸까요?
-- 3. 평균 학점이 3.5미만인 학생은? SELECT students.nickname AS "닉네임", ROUND(AVG(grade_points.point),2) AS "평균 학점" FROM students JOIN grades ON grades.student_id = students.id JOIN grade_points ON grade_points.grade = grades.grade GROUP BY students.nickname HAVING 3.5 > AVG(grade_points.point) ; -- 서브 쿼리 이용 답 SELECT students.nickname AS "닉네임", avg_grade_point.round AS "평균 학점" FROM students JOIN (-- 학생별_평균_학점 SELECT student_id, ROUND(AVG(point), 2) FROM grades JOIN grade_points ON grade_points.grade = grades.grade GROUP BY student_id HAVING AVG(point) < 3.5 ) AS avg_grade_point ON avg_grade_point.student_id = students.id ; 서브 쿼리를 이용하려고 생각하는 게 좋을까요? 단순히 JOIN만 사용해서 할 수 있으면 JOIN만 써도 괜찮을까요..? 현업에서는 어떤 걸 더 많이 쓰게 될지 궁금합니다!