간단한 조인쿼리 작성좀 부탁드립니다.
본문
회원 테이블 member_table
+----+----------+---------------------+---------------------------------------------+
| no | name | dayofweek | area |
+----+----------+---------------------+---------------------------------------------+
1 길동 월,화,수,목 강남구,강동구,강서구
2 영희 수,목,금,토 강남구,종로구,마포구,동대문구
3 순이 수,목,금,토,일 마포구,동대문구,노원구,양천구
4 철수 월,수,일 강동구,강북구,노원구,중랑구
오늘 업무 테이블 today_work_table
+----+----------+---------------------+
| no | today | today_area |
+----+----------+---------------------+
1 목 강남구
너무 초보적인 질문이라 죄송합니다.
나이먹고 공부하기 쉽지가 않네요 ㅠㅠ
위와 같은 테이블이 2개가 있습니다.
오늘 업무 테이블 today_work_table 을 기준으로 하여 오늘 날짜인 "목" 과 영업지역인 "강남구' 에서
영업가능한 사람을 회원 테이블 member_table에서 추려 내고자 합니다.
구하고자 하는것이
1. 목요일 강남구에서 영업 가능한 회원이 몇명인지.
2. 목요일 강남구에서 영업 가능한 회원 이름이 누구누구인지
입니다.
각 쿼리를 어찌 구성해야 할까요?
답변 2
실무에서 요일이나 지역을 저렇게 한필드에 ,으로 구분해서 넣어두고 like 구문으로 필터링하면 매우 비효율적입니다.
데이터가 적을 때는 별 문제 없지만 데이터가 많아지만 쿼리 성능이 매우 낮아지거든요. 물론 몇십만 몇백만건정도까지도
큰 문데 없이 작동하긴 합니다만...^^; 질문에 충실할 답변을 하자면
일단 1번은 2번의 경과의 카운트를 구하시면 될 것 같구요.
2번 기준으로 다음과 같이 작성하시면 작동 할겁니다.
select m.name, m.dayofweek, m.area from today_work_table t join member_table m on m.dayofweek like concat ('%', t.today, '%') and m.area like concat('%', t.today_area, '%');
테이블 정규화를 해주세요~
그리고 방문지역은 area1 ~ 5 개 정도로 필드를 나누어 주시는 것이 검색 속도가 향상됩니다.
답변을 작성하시기 전에 로그인 해주세요.