Mysql 일대다 슬레이브 테이블에서 다중 조건 및 다중 통계를 수행하는 방법
世界只因有你
世界只因有你 2017-05-18 10:54:32
0
3
817

메인 테이블 사용자 테이블
id 이름 전화(연관 필드)

통화 기록 테이블
ID 전화(연관 필드) ot_phone 시간 유형(수신 및 발신 통화) input_time

문의 양식
id c_id 전화

회사 테이블
c_id 이름

모든 사람의 전화 통화 수를 계산하는 방법(목록 제한 0, 10)
수신 전화 수
발신 전화 수
현지 전화 수
시외 전화 수
총 수신 전화 수
총 발신 전화 수
일치하는 회사 수(주로 연락처 테이블의 전화기는 동일한 전화기이지만 다른 회사에 해당하기 때문에 왼쪽 조인 합계() 데이터가 정확하지 않습니다.)
회사의 통화 시간을 일치시키세요
.... .

주된 문제는 연락처 테이블의 전화번호가 고유하지 않고 중복된 전화번호가 있다는 것입니다. 예를 들어 한 사람이 두 회사에 근무하는 경우
leftjoin sum 후
회사에 중복된 데이터가 있고 데이터가 부정확합니다

사실 연락처 테이블폰 중복을 제거한 다음 다른 테이블과 합칠까도 생각했는데 속도가 너무 느려서 50초 정도 걸릴 것 같아요
연락처 테이블이 50,000위안이 넘네요

이건 SQL 하나로는 해결이 안되는 것 같습니다

최종 결과

id name 전화 in_num(수신 전화 수) out_num(발신 전화 수) local_phone_num(지역 번호) .....
23 '小白' 15523232323 45 120 30 ....과 유사합니다. .
24 '소세' 18823232323 70 93 41 ......

世界只因有你
世界只因有你

모든 응답(3)
小葫芦

우선 국내번호와 외국번호를 정의하는 필드가 있어야 하고, 통화 기록 없이 번호를 표시해야 하는지 여부가 필요하다면 다음 SQL을 Left Join으로 변경하고 해당 값에 대해 Null 처리를 수행합니다. ​​오른쪽 표에 없으면 직접 사용하셔도 됩니다

으아아아

추가하려면, 테이블 b의 통화 시간이 통계적 int 유형의 분이 아닌 경우 변환해야 할 수도 있습니다

Ty80

다음 SQL을 실행하면 다음과 같은 결과를 얻을 수 있습니다. (귀하의 질문에서 예상되는 결과가 약간 불분명합니다.)

ID 이름 전화 유형 개수
23 소백 15523232323 in 14
23 소백 15523232323 아웃 287

SQL

으아악
淡淡烟草味

외부 조인 쿼리를 사용할 수 있습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿