묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결데이터 분석 SQL Fundamentals
join 실습 관련 질문 있습니다.
안녕하세요! 강의 정말 잘 듣고 있습니다!!!!본 영상에서 첫번째 예시로 기간 범위에 따른 조회(1997년 주문)를 예시로 들어주셨는데 -- 강사님 예시 SELECT a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address FROM customers a JOIN orders b ON a.customer_id = b.customer_id WHERE a.contact_name = 'Antonio Moreno' AND b.order_date BETWEEN to_date('19970101', 'yyyymmdd') AND to_date('19971231', 'yyyymmdd');그런데 기간 범위를 설정할 때 1년 범위 설정 쿼리가 너무 길어보여서 다른 function들을 찾아서 적용해보았습니다.-- 수정1 SELECT a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address FROM customers a JOIN orders b ON a.customer_id = b.customer_id WHERE a.contact_name = 'Antonio Moreno' AND date_part('year', b.order_date) = '1997';(물론 이쪽은 연도나 월 등 딱 하나만 인덱싱이 가능하니 한계는 있어보이네요.)혹은-- 수정2 SELECT a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address FROM customers a JOIN orders b ON a.customer_id = b.customer_id WHERE a.contact_name = 'Antonio Moreno' AND b.order_date BETWEEN '1997-01-01' AND '1997-12-31';이렇게 작성해도 결과물은 같긴 하더라고요.강사님이 들어주신 예시의 to_date()는 검색해보니 대부분 오라클에서 많이 언급되는 것 같은데,이쪽 쿼리가 더 범용적으로 사용되기에 사용하신 것인지, 아니면 다른 function도 딱히 문제는 없는 것인지 궁금합니다.강의 최고입니다!! 감사합니다.
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
JOIN 관련 문의
안녕하세요. JOIN 공부 중 질문이 하나 생겼습니다. 아래와 같이 조인을할 때, 어떤 테이블은 INNER JOIN을 진행하고, 어떤 테이블은 LEFT JOIN을 진행한다고 했을 때, 결과는 어떤식으로 나오나요? 각각의 조인에 맞는 데이터가 나오는게 맞을까요? SELECT A.*, B.col1, C.col2 FROM TableA AS A INNER JOIN TableB AS B ON A.id = B.id LEFT JOIN TableC AS C ON A.id =C.id ;
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
dto join 과 일반 fetch join 차이점에 대해 질문 있습니다
em.createQuery( "select new jpadook.jpashop.repository.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address)" + " from Order o" + " join o.member m" + " join o.delivery d" , OrderSimpleQueryDto.class) .getResultList(); createQuery문은 결국 fetch조인이 내부적으로 된다고 생각해도 됩니까?
-
미해결실전! Querydsl
entity와 DTO의 join
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님 jpa 로드맵을 수강하고 사이드프로젝트를 진행중인데요. 제목과 같이 entity 와 dto를 join할수 있는지 궁금합니다. 구체적으로 설명해보자면 우선 1. open api를 통해서 List<T> 를 DTO로 받아서(ex, 상품 list) 사용자가 상품을 좋아요 누른 데이터를 DB에 저장해두었습니다.(member idx 와 상품 idx 저장) open api 에서 받은 데이터는 따로 DB에 저장하지 않고 호출시마다 DTO로 응답하는데요. 2. 여기서 당연하게도 open api에서 받은 list에는 사용자의 좋아요가 담겨 있지 않기때문에 DB에서 사용자가 좋아요 누른 상품 list를 조회 후에 open api 에서 받은 list 를 돌며 좋아요 데이터를 추가해주고 있습니다. 혹시 2번처럼 진행하지않고 DB에서 사용자 좋아요 누른 상품(entity)을 open api 에서 받은 데이터(DTO)와 join 하는 방법은 없을까요? 설명이 부족하다면 말씀 부탁드립니다 ! 감사합니다.
-
미해결데이터 분석 SQL Fundamentals
조인 실습 - 02에서 with를 쓰고 안쓰고의 차이가 뭔가요?
-- 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 -- 모든 급여를 취합한 평균 급여 select e.ename, round(avg(sh.sal),-2) from hr.emp_salary_hist sh join hr.emp e on sh.empno = e.empno join hr.dept d on d.deptno = e.deptno where d.dname in ('SALES','RESEARCH') group by e.ename 위드 절을 모른 상태에서 강의를 선행학습 하면서 이렇게 코드를 썼는데요, 강의 노트에 있는 정답(수업시에도 언급하신)은 아래와 같습니다. 차이가 있을까요? -- 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 모든 급여를 취합한 평균 급여 with temp_01 as ( select a.dname, b.empno, b.ename, b.job, c.fromdate, c.todate, c.sal from hr.dept a join hr.emp b on a.deptno = b.deptno join hr.emp_salary_hist c on b.empno = c.empno where a.dname in('SALES', 'RESEARCH') order by a.dname, b.empno, c.fromdate ) select empno, max(ename) as ename, avg(sal) as avg_sal from temp_01 group by empno;
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
해당 문제 JOIN 관련 질문 드립니다.
안녕하세요. 먼저 강의를 듣기 전 혼자 풀었을 때 이것이 왜 틀렸는지 궁금해서 요리조리 테이블을 만들어봤습니다. 그러다보니 LEFT JOIN과 INNER JOIN에 대해서 의문이 생겼는데요. 비주얼라이제이션을 봐도 이해가가지 않아서 질문드립니다. Department.id 도 1,2로 이루어져있고 employee. departmentid도 1,2로 이루어져있으니 공통적인 부분으로 left join 처럼 뽑아질 수 있는 것 아닌가요? 왜 두개만 뽑아지는지 궁금합니다... department 테이블의 데이터가 두개만 있어서 그런건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
1:N관계인 경우 Join 유무
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. Team team = new Team(); team.setId(1L); team.setName("t1"); em.persist(team); Member mem1 = new Member(); mem1.setName("aaa"); mem1.setTeam(team); em.persist(mem1); Member mem2 = new Member(); mem2.setName("bbb"); mem2.setTeam(team); em.persist(mem2); Member mem3 = new Member(); mem3.setName("ccc"); mem3.setTeam(team); em.persist(mem3); em.clear(); em.flush(); // Team newTeam = em.find(Team.class, 1L); // System.out.println(newTeam.toString()); // List<Member> ML = newTeam.getMembers(); // System.out.println("test:"+ML.get(0).getName()); Member newMember = em.find(Member.class, 1L); System.out.println("test:"+newMember.getTeam().getName()); tx.commit(); 1:N관계인 Team Member를 DB에서 가져올때 서로 양방향 연관관계인 경우 Team에서는 join없이 2번의 쿼리를 날려서 조회하고Member에서는 외래키를 사용하여 join문으로 1번의 쿼리로 조회를 하더라구요.혹시 이 두가지가 왜 이런 차이가 나는지 알 수 있을까요? Team에서 Member를 가져올때 충분히 기본키를 활용하여 가져올 수 있을텐데요
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
JOIN 개념의 이해
JOIN 개념이 잘 이해가 되지 않아 질문을 남깁니다.JOIN을 사용하면 다른 테이블과 결합할 수 있다는 것까진 이해가 되었는데요 벤다이어 그램에서 INNER JOIN 으로 조회를 하면 교집합과 같은 개념이고, OUTER JOIN을 하면 A에는 없고 B에는 있는 데이터들은 조회가 되지 않는 것이라고 말씀하셨었는데요..! SELECT * FROM Customers INNER JOIN Orders ON customers.customerID = orders.customerID 이렇게 이너조인을 할 때 ON 뒤에 오는 'customers.customerID = orders.customerID' 이부분만 교집합으로 되어 중복되어 나오지 않고 SELECT * 이기 때문에 나머지 컬럼들은 모두 결합을 하는 것인가요? 그리고 LEFT JOIN, RIGHT JOIN을 할 때도 벤다이어 그램에는 A를 출력하는 것 혹은 B를 출력하는 것과 차이가 없는 것처럼 나와서 왜 A테이블만 출력한 것과 LEFT JOIN을 한 것의 출력 값이 다른 것인가요?
-
미해결윤재성의 Oracle SQL Database 11g PL/SQL Developer
join 학습 문의
강의 중 두 테이블을 join하여 평균 salary를 구하는 문제 중 select avg(sal) from emp a1, dep a2 where a1.deptno = a2.deptno and a2.loc = 'DALLAS'; 이 문제에서 왜 avg(a1.sal)이 아닌 avg(sal)이 사용하는지, 앞의 방식도 가능한지 궁금합니다.
-
미해결제주코딩베이스캠프 Code Festival: JavaScript 100제
33번 문제 for문대신 join 사용
안녕하세요 33번문제 혹시 for문을 join()을 사용해 아래처럼 풀면 다른 문제되는 상황이 있을까요? 차이가 궁금합니다 console.log(text.split(' ').reverse().join(' '))
-
미해결스프링 데이터 JPA
Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?
안녕하세요, 강의 덕분에 많은 도움을 받고 있습니다. 감사합니다. Eager 모드로 조회할 경우 join문에 대한 질문입니다. 강의 내용을 보니 쿼리가 left outer join으로 생성되는데요 혹 inner join으로 생성되도록 설정하는 방법이 있을까요? 감사합니다 :)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일반 조인과 fetch join 차이에 대해 질문이 있습니다.
섹션 11. 객체지향 쿼리 언어2- 중급 문법 내의 "페치 조인1 - 기본" 강의를 듣고 작성하는 질문입니다. 안녕하세요 :) https://www.inflearn.com/questions/164472 https://www.inflearn.com/questions/170331 Q1) 제가 헷갈리는 부분과 관련해서 질문들이 있길래 다 살펴봤지만, 제가 명확하게 이해한 것인지 확신을 할 수 없어서 이렇게 질문 남깁니다. 일반 조인 -> 두 객체를 돌려받음, 객체 그래프 채워짐 (객체 그래프가 채워질 꺼라 생각한 이유는, https://www.inflearn.com/questions/170331 의 강사님 답변 "Object[]은 각각 따로 조회하기 때문에 이런 부분을 처리할 때 작업 공수가 많이 들어갑니다." 이 내포하는 뜻이 두 조인의 내부적인 동작에서는 차이가 있지만 결과는 똑같다고 생각해서입니다.) 페치 조인 -> 한 객체를 돌려받음, 객체 그래프 채워짐 제가 이해한 내용이 맞을까요? Q2) 일반 조인시에도 객체 그래프가 채워지는 지 확인하기 위해서, 코드를 직접 짜서 테스트를 돌려봤는데 이해하기 힘든 쿼리가 나가서 추가적으로 질문 남깁니다. (위의 질문에 대한 답변과 유사성이 있을까싶어, 한 질문란에 두개의 질문을 남깁니다. 아니라면 죄송합니다 ㅠㅠ) 해당 테스트 관련 코드와 결과화면을 첨부해두겠습니다. 일반 조인을 통해 작성한 쿼리를 em.createQuery()... 를 통해 결과리스트를 반환받고 하나씩 반복문을 통해 돌려보는데, select query가 추가로 나가는 것을 발견했습니다. member 에서 team 을 조회할 때는 쿼리가 추가로 발생하지 않는데, team에서 member를 조회할 때에 쿼리가 추가로 발생합니다. 처음 작성한 query를 통해 member를 다 받아왔을텐데, 왜 team에서 member를 조회할 때 쿼리가 추가로 발생할까요..? 고민해봐도 모르겠어서 질문 남깁니다. 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
컬렉션 값 연관 경로 : 명시적 조인 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]명시적 조인 예시로 보여주신 다음 JPQL에 궁금한적이 있습니다. select m.username from Team t join t.members m 위 코드에서 alias m은 무엇에 대한 별칭인가요? 1. t.members as m 위 코드 처럼 team과 members를 묵시적으로 조인한 결과 릴레이션을 m이라 칭한다는 의미인가요?? 아니면... 2. (Team t join t.members) m 위 코드처럼 t와 t.members 를 조인한 릴레이션을 m이라 칭한다는 의미인가요?? PPT를 보면 "FROM 절에서 명시적 조인을 통해 별칭을 얻는다" 라고 하셨는데, 명시적 조인을 통해 => 즉 2번 을 통해 m을 얻는다는 의미 인가요? 이게 한줄로 써있다 보니까 햇갈리는것 같습니다 ㅠ.ㅠ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원가입 동시성 문제
안녕하세요. 강의를 보다가 질문 드립니다. 회원가입 중복처리 부분에서, 김영한님 말대로 회원가입하는 사람수가 매우 많으면 validateDuplicateMember만으론 부족하여, 결국 동시성문제가 발생 할 수밖에 없습니다. 그래서 name에 대하여 unique제약조건이 필수인데요. 그런데 생각해보면 그럴거면 굳이 validateDuplicateMember를 할 필요없이 그냥 unique제약조건을 걸어놓기만 해도 충분합니다. 제가 보기에는 에러처리를 괜히 두번해주는 느낌을 받았거든요. 여기서 이렇게 해주는 이유는 1. 단순 예시를 보여주기 위함. 2. 도메인에 unique제약 조건을 거는 것만으론 테스트를 통과하지 못함(@Commit을 추가하지 않는 이상). 이부분이 테스트 할때 좀 거슬리긴 하더라구요. 3. 좀 더 빠른 반응성? 4. db쪽 예외는 나중에 앞단에서 처리해주기 까다로움. 5. 그 외 다른 이유가 있음. 이정도 생각해보았는데요. 어떤 이유에서 인지 알려주시면 감사하겠습니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
회원 가입 프로세스 관련 질문
안녕하세요. 회원가입 관련하여 질문드립니다. 어느 부분을 살펴봐야 할지 조언 부탁드립니다. 회원가입 API(join)로 POSTMAN을 사용하여 POST를 했을 때 아무것도 입력하지 않고 POST를 했을 경우 "이메일을 입력해주세요." , STATUSCODE : '설정한값' 이런식으로 응답이 정상적으로 받아집니다. 그런데, POSTMAN에서 {"email":"nak512@naver.com"} 입력하여 POST 했을 경우에도 동일하게 "이메일을 입력해주세요." , STATUSCODE : '설정한값' 이런식으로 응답이 옵니다. POSTMAN에서 POST한 값들을 을 정상적으로 받아오나 출력을 해보니 제대로 값을 받아오지 못해 모두 빈값으로 들어 오더라구요. 모듈 -> 컨트롤러 -> 서비스 이런식으로 연결된다는 말씀을 듣고 살펴보아도 잘모르겠습니다. 자세한 코드를 올리지 않아 디테일한 조언을 해주시긴 어렵겠지만, 어떤식으로 접근 해봐라 정도로 조언이 가능하실까요? 읽어주셔서 감사합니다. [제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
-
미해결실전! Querydsl
크로스조인
안녕하세요 영한님 강의 항상 잘 듣고있습니다. 실무에서도 cross join을 사용 하는 경우가 있을까요? 데이터 뻥튀기가 어마어마 한거같아서 질문드립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
싱글 테이블 전략과 JOIN
안녕하세요 강사님. 한 가지 궁금한 점이 있어 질문드립니다! 단일 테이블이 속도적 이점으로 인해 사용한다고 하셨는데요. 이게 어느 정도의 규모까지 허용이 되는가가 궁금합니다. 강사님의 예제와 Book, Album 적은 개수의 테이블만 존재할 경우에는 사용이 유리하다는 것은 확실한데 이제 점점 테이블이 많아지면 많아질수록 Item 테이블의 column의 개수가 많아져 관리가 힘들다고 생각되는데요. 이 경우에는 그냥 JOIN을 사용하는 것이 바람직한가요? 아니면 선택의 차이인가요? 정리하자면, 어느 정도의 규모까지가 싱글 테이블 전략을 사용할 것인가? 선택의 차이인가? 입니다. 감사합니다.